关键在于打包时用tar -czphf -C /var/www html保留权限与软链且不带根路径前缀,解压时tar -xzf -C /var/www精准还原,再同步配置、SSL证书等关联文件。

直接用 tar 完整迁移网站根目录(比如 /var/www/html)的关键,是打包时保留原始权限、不带绝对路径前缀,解压时精准还原到目标位置——不是简单“复制粘贴”,而是确保权限、所有者、软链接、隐藏文件全量一致。
打包前:确认源目录结构和关键细节
先明确你要迁移的路径,例如典型网站根目录:/var/www/html。注意以下几点:
- 确认该目录下是否有符号链接(如指向
/opt/app的软链),需用-h参数归档真实文件; - 检查是否存在特殊权限(如 setuid 文件),建议加
-p保留权限和属主信息; - 避免打包时带上根路径前缀(即解压后不要出现
/var/www/html/xxx),否则目标机上会多出冗余层级。
打包命令:不带路径前缀 + 保留属性
推荐在源服务器执行(以 /var/www/html 为例):
tar -czphf /tmp/site_backup.tar.gz -C /var/www html
-
-C /var/www表示切换到/var/www目录再操作,后面跟html(不带斜杠); - 这样打包出来的归档里,内容就是
html/xxx,而非/var/www/html/xxx; -
-h确保软链接被展开为实际文件;-p保留权限、时间戳、属主;-z启用 gzip 压缩。
传输与解压:精准还原到目标位置
把 /tmp/site_backup.tar.gz 传到目标服务器(如用 scp),然后在目标机执行:
tar -xzf /path/to/site_backup.tar.gz -C /var/www
-
-C /var/www指定解压基准目录,归档中的html/就会自动落在/var/www/html; - 如果目标机尚未创建
/var/www,需提前mkdir -p /var/www; - 解压后建议校验:
ls -la /var/www/html看权限、属主是否与源一致,find /var/www/html -type l检查软链是否正常。
额外提醒:别漏掉关联文件
网站运行不止靠根目录代码,还需同步:
-
配置文件:如 Nginx 的
/etc/nginx/sites-enabled/下的站点配置; -
SSL 证书:通常在
/etc/letsencrypt/live/或/etc/ssl/; -
用户上传目录(如有):比如
/var/www/uploads或独立挂载点; - 这些目录建议单独打包、分别传输,并按路径原样解压,避免混入主包导致覆盖风险。


















