假设我想:
从服务器 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 并忽略了诸如确保您位于正确的目录中之类的事情。)