Tar 命令和 PIPE

Tar 命令和 PIPE

假设我想:

从服务器 A 上的目录创建 tar 球

将此 tarball 复制到服务器 B

在服务器 B 中解压

ssh root@serverB   " scp  root@serverA:/var/www/dirs.tar.gz  /var/www/dirs.tar.gz && tar -xvf  /var/www/dirs.tar.gz 

我想避免使用管道重复路径。如何用 PIPE 正确编写它以获得第二个参数?

谢谢

答案1

只是压缩一个目录,将其复制到远程服务器,然后在哪里解压?那么scp -r directory ...rsync -r directory ...或者sftp就好多了。

如果您想将 tar 文件复制到远程服务器并解压它,请尝试

tar -cf - mydir | ssh [email protected] 'bash -c "tee archive.tar | tar -xf -"'

这里的关键是tee:它将 tar 文件的副本放入远程文件系统中,并将 tar 文件传递​​给 tar 命令,该命令将其解压。

也许一个不太复杂的解决方案是将rsync目录简单地传输到远程服务器,您可以在其中创建一个 tar 文件。

答案2

我们不知道如何创建 tarball,以及是否需要一个单独的步骤,但tar不需要创建/使用文件,因此应该按照以下方式进行操作:

ssh serverA tar cz file… | tar xz

(为了便于理解,我假设您已经是 root@serverB 并忽略了诸如确保您位于正确的目录中之类的事情。)

相关内容