使用 SSH 和 WGET 备份网站文件 - 在生成的 tar 中省略 /path/to/htdocs

使用 SSH 和 WGET 备份网站文件 - 在生成的 tar 中省略 /path/to/htdocs

通过 SSH 连接到远程 Web 服务器后,我在 CentOS 远程 Web 服务器上执行以下命令:

tar -vcf remote_name.tar /home/remote_name/public_html

在我的本地系统(基于 Debian)上,我执行以下命令:

user@linux-mx21:/var/www/html
$ wget https://example.com/remote_name.tar
$ mkdir remote_name
$ tar -vxf remote_name.tar --directory ./remote_name

一切都很好,但是...我不希望 dir 结构的结果如下: /var/www/html/remote_name/home/remote_name/public_html/(public_files,and,dirs_extracted_here)。

相反,我希望结果如下:

/var/www/html/remote_name/

新位置下的结果文件,

/var/www/html/remote_name将是原始位置的镜像,不包括父目录结构。

考虑到我的命令结果如上所示,现在驻留在的文件/var/www/html/remote_name/home/remote_name/public_html必须从我想要的位置移动/var/www/html/remote_name/。我想跳过这一步并改进我的命令。

我认为当我在远程位置使用 SSH 时,可以根据需要在命令上设置 w/args tar,但我不知道实现我想要的效果的正确参数。

非常感谢您的帮助!

答案1

tar能够chdir通过以下命令进入目录C

$ mkdir -p a/b/public_html
$ touch a/b/public_html/index.html
$ tar vCcf a/b/public_html remote_name.tar .
a .
a ./index.html

这使得 tarball 相对于当前目录 a/b/public_html。然而,这并不典型,并且可能被认为是粗鲁的,因为其他人扩展 tarball 最终会默认在其主目录中包含所有文件。如果您是唯一使用该 tarball 的人,这可能不是一个问题。

更典型的是将 tarball 升级一级,或者:

$ rm remote_name.tar
$ tar vCcf a/b remote_name.tar public_html
a public_html
a public_html/index.html

然后,在扩展方面,您需要chdir 在父命令中进行适当的操作,例如

cd some/dir && tar xf remote_name.tar

或在tar命令本身内

tar xCf some/dir remote_name.tar

确切的内容some/dir取决于 tarball 的制作方式,无论是从不太常见的.目录,还是更典型的父目录。

相关内容