ログインしたシェルから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経由で転送できる名前に明示的に置き換えます。