web-dev-qa-db-ja.com

存在するファイルをスキップしながらファイルをコピーする-Unix

大きなフォルダー(〜100GB)を別のフォルダーにコピーしたいのですが。存在するファイル(フォルダーではない)をスキップしたいので、/music/index.htmlは存在しませんが、/musicディレクトリはすでに存在します。

this が見つかりましたが、シェルは-uは有効な引数ではありません。

rsyncがどのように機能するかわかりませんので、それがより良い解決策かどうかを教えてください。

ありがとう。

32
switz

ファイルのコピーには常にrsyncを使用してください。

既存のファイルを無視するには:

rsync --ignore-existing --recursive /src /dst

manual を読んで、多くの素晴らしい例を探してください。特にsshとの組み合わせにより、rsyncは、--partialオプション。追加 --verboseコピーされているファイルを確認します。パーミッション、ユーザー、タイムスタンプの保存に関する豊富なオプションも確認してください。

54
Kerrek SB

rsync(1)は、ソースと宛先が2つの異なるコンピューター上にある場合に絶対に輝いています。発信元と宛先が同じコンピューター上にある場合に使用するのが依然として優れたツールです。

simpleの使用は次のようになります。

_rsync -av /path/to/source /path/to/destination
_

両方の場所に存在するファイルが同一であると確信している場合は、_--ignore-existing_オプションを使用します。

_rsync -av --ignore-existing /path/to/source /path/to/destination
_

完全を期すために、rsync(1)を使用してリモートシステムでバックアップを作成する場合、最も好ましいコマンドは次のとおりです。

_rsync -avz -P /path/to/source hostname:/path/to/destination
_

_-z_は圧縮を要求します(ローカルでは気にしませんが、遅いネットワークリンクでは大きな違いを生むことができます)。_-P_は_--partial_および_--progress_を要求します-再利用する必要があります部分ファイル転送を再起動する必要がある場合はファイル転送を行い、便利な進行状況バーインジケーターを表示します。

8
sarnold