私はこのコマンドに初めて触れました。ローカルフォルダをgzipに圧縮し、リモートサーバーで解凍しようとしています。問題は、gzipの圧縮と解凍がすぐに行われるべきです。私はたくさん試してみましたが、最も近いものの1つは次のとおりです。
tar cf dist.tar ~/Documents/projects/myproject/dist/ | ssh [email protected]:~/public_html/ "tar zx ~/Documents/projects/myproject/dist.tar"
上記のように、distフォルダをリモートサーバーに送信しようとしていますが、その前にフォルダを即座に圧縮したい(上記のコマンドでは、これは起こらないようです。)。
- ローカルフォルダ:
~/Documents/projects/myproject/dist/
- リモートフォルダ
~/public_html
:(直接展開してオンラインに切り替える)
もちろん、gzipで生成されたファイルは存在してはならず、すぐに発生するはずです。
私の意図はsh file.command
。プロジェクトを変更するたびにこれを手動で実行したくありません。dist
sh
ベストアンサー1
rsync
次に、既存のファイルを使用して違い(ファイルの別の部分)のみを転送できるようにする場合は、
rsync -az ~/Documents/projects/myproject/dist/ [email protected]:public_html/
--delete
毎回ターゲットディレクトリツリーを完全に上書きするには、フラグを追加します。何が起こっているのかを確認するには、を追加してください-v
。
1つがなければ、あまりrsync
効率的ではないこのソリューションを使用するだけでtar
十分です。
( cd ~/Documents/projects/myproject/dist && tar czf - . ) |
ssh [email protected] 'cd public_html && tar xzf -'
圧縮されたタールボールの書き込みと読み取りは、次のように行われます。標準出力そして標準入力(-
ファイル名)。 GNUを使用している場合は、処理する前に正しいディレクトリを設定tar
できますが、-C
ここでは古い(伝統的な?cd
)を使用しています。v
何が起こっているかを確認するには(受信側)フラグを追加しますtar xzvf ...
。