
では、デフォルトでrsyncを使用して、元の別のプログラム(wget、curl、scp、ftp ...)によって開始されたファイル/ディレクトリの転送を再開できますか?
答え1
はい。ただし、最適なパフォーマンスを得るには、使用するオプションに注意を払う必要があります。
ファイルをダウンロードするときは、ファイルの修正時間を維持してください。ファイル同期ユーティリティは、通常、ソースファイルとターゲットファイルのサイズと変更時間が同じ場合、そのファイルの内容が同じであると仮定します。これにより、複数のファイルの同期速度が大幅に向上します。変更時間が異なる場合、rsyncは両側の内容を読み取ってファイルを転送するかどうかを決定する必要があります。
- で()を
wget
使用してください。-N
--timestamping
- で()を
curl
使用してください。-R
--remote-time
cp
、、(またはGNUの場合)と一緒にscp
使用してください。-p
-a
cp
- で または を
rsync
使用します。 (特定の場合に必要な理由がわからない限り、必ず使用してください。)-t
-a
rsync -a
- FTPプログラムは通常タイムスタンプをコピーします。
- optionsを渡して、ソースファイルとターゲットファイルが同じであると仮定するようにrsyncに指示できます
--size-only
。ファイルを修正する唯一の方法は、最後にデータを追加してファイルを増やすことであれば問題ありません。この場合、その--append
オプションも渡す必要があります。ただし、ファイルを別の方法で変更できる場合は--size-only
安全ではありません。ファイルサイズが変更されない場合は、修正内容を見逃すことがあります。
一般を使用する場合rsync -a
:
- ターゲットに存在しないファイルは単にコピーされます。
- ターゲットに存在するがタイムスタンプまたはサイズが異なるファイルをコピーします。 Rsyncは、デルタ転送アルゴリズムを介して転送されるデータ量を最小化しようとし、ファイルに同じ部分がある場合は転送を保存します。
- ターゲットに存在し、タイムスタンプと同じサイズのファイルはスキップされます。
両方のファイルが同じコピーまたは切り捨てられたコピーであると確信している場合は、この--append
オプションを渡すことができます。このオプションを使用すると、rsyncはターゲットのすべてのファイルが部分的または完全なコピーであると仮定し、ファイルの先頭が両側で同じであることを確認せずに、欠落しているデータを短いファイルに直接追加します。これは高速ですが、より脆弱です。