回答:
使用できますrsync
。rsync
このタイプの操作用に設計されています。
構文:
rsync -avh /source/path/ host:/destination/path
または
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
初めて実行すると、すべてのコンテンツがコピーされ、新しいファイルのみがコピーされます。
最初にSCPベースのソリューションを要求したことによって示されたように、SSH接続を介してトラフィックをトンネリングする必要がある場合(たとえば、機密保持の目的で)、-e ssh
にパラメーターを追加しますrsync
。例えば:
rsync -avh -e ssh /source/path/ host:/destination/path
rsync -t *.c foo:src/
-> "これは、パターン* .cに一致するすべてのファイルを現在のディレクトリからマシンfooのディレクトリsrcに転送します。いずれかのファイルがリモートシステムに既に存在する場合、rsync remote-更新プロトコルは違いのみを送信することで、ファイルを更新するために使用される "
rsync -avuzh /source/path/ host:/destination/path
。これにより、1つのコマンドでジョブ全体が実行され、以降の呼び出しでは、必要なファイルのみが転送されます。
何らかの理由でscpを使い続けたい場合は、ローカルデータのw権限を削除し(権限がある場合)、scpはそれを変更しません。より正確には:
chmod a-w local/*.tar.gz
(ローカルディレクトリ内)scp remote/*.tar.gz local
これはあまり効率的ではありませんが、scp以外のものに変更せずに高速で一時的な解決策が必要な場合に役立ちます。(称賛:宛先の既存のファイルを置き換えないscp)
--ignore-existing
、本当に必要?