通过 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 的制作方式,无论是从不太常见的.
目录,还是更典型的父目录。