yiskw note

機械学習やプログラミングについて気まぐれで書きます

すでに転送済みのファイルを無視してscpする


ローカルサーバーからリモートサーバーに(もしくは逆方向に),
大量のファイルをscpコマンドでコピーする際に,
途中でなんらかの原因でコピーが中断されてしまうことがありました.
また一から送信し直すのは時間がかかってしまうので,
すでにコピー済みのファイルを無視して転送する方法がないか調べたところ,
rsyncコマンドというものがあることがわかったので,こちらにメモを残しておきます.

rsyncコマンドとは

二つのサーバー間でファイルやディレクトリを同期するコマンドです.
その際に,コピー元と保存先で差分がある箇所のみ更新をしてくれます.
そのため,バックアップやミラーリングによく使われるみたいです.

rsyncの使い方

scpと同じように

rsync [option] コピー元 保存先

とすることで,ファイルの同期が行われます.
その際に--ignore-existingオプションを指定することで,
すでに保存先に存在するファイルは無視してくれます. そのため,scpによるコピーが途中で中断されても,
rsyncを実行することで,その途中からファイルのコピーができます.

ちなみに以下のようなオプションが使えます.

-v ... 詳細なログ出力を行う
-z ... ファイルを圧縮する
-u ... 保存先のファイルの方が新しい場合は無視する
--ignore-existing ... すでに存在するファイルは無視する.

その他のオプションに関しては,以下を参考にしてください.

linux.die.net

参考