获取 tar 并复制到远程服务器并提取该 tar

获取 tar 并复制到远程服务器并提取该 tar

我想从登录的 shell 中获取 tar 并将该 tar 文件传输到远程主机,然后在那里提取 tar 文件。我有以下命令,但 tar 本身没有创建。

time=`date`
timestamp=`date +%F_%H%M`
backpfilename=db${timestamp}.tar.gz

cd /home/aryan/ && tar -cvzf $backupfilename | ssh root@remoteserver 'cd /home/aryantest/ && tar -xvzf $backpfilename'

答案1

您可以直接在另一端提取 tar 文件,而无需将其写入磁盘:

tar czv <files>| ssh root@remoteserver 'cat | tar xz -C /remotedir'

您甚至可以使用它来netcat复制文件。

如果你想要一个进度条,你可以使用pv它。它将把速度打印到标准输出,以便您可以检查它的复制速度:

tar czv <files> | pv | ssh root@remoteserver 'cat | tar xz -C /remotedir'

如果您已有该 tar 文件,则可以pv通过 ssh 通过管道传输它:

pv backupfile.tgz| ssh root@remoteserver 'cat | tar xz -C /remotedir'

答案2

尝试这个 :

cd /home/aryan
tar cfvz /dev/stdout . |
    ssh root@remoteserver 'cat > file.tar.gz && tar zxvf file.tar.gz'

你只需要稍微适应一下

笔记

/dev/stdout可以替换为-.

使用 tar 创建压缩文件的基本方法是:tar opts file.ext dir/。在这里,我们明确地将目标文件名替换为STDOUT能够通过 ssh 传输它。

相关内容