このコマンドは、定期的なバックアップを作成するスクリプトに使用されます。
rsync -aP --link-dest="$BACKUP_DIR/Latest/TheProject" \
"$SOURCE_DIR/" "$BACKUP_DIR/inProgress/TheProject"
$SOURCE_DIR
コピーするファイルの「リアルタイム」位置。/opt/TheProject
例:$BACKUP_DIR/Latest
最新のタイムスタンプへのソフトリンク(例:$BACKUP_DIR/20220714-0000
.(スクリプトの最後では、ディレクトリ$BACKUP_DIR/inProgress
は現在のタイムスタンプに移動されます$BACKUP_DIR/20220714-0000
))$SOURCE_DIR
$BACKUP_DIR
別のファイルシステムにあります。
プロジェクトの一部の大容量ファイルはほとんど変更されないため--link-dest
。
うまく機能し、ハードリンクも機能します(を使用して見たようにls -i
)。たとえば、$BACKUP_DIR/20220714-0000/somedir/bigfile1.bin
以前のバージョンと同じinodeを持ちます$BACKUP_DIR/20220713-0000/somedir/bigfile1.bin
。
問題は、このハードリンクがただ発生しているようです。最後に全体のrsync
操作プロセス。
rsync
実行時には$BACKUP_DIR/inProgress/somedir/bigfile1.bin
実際には異なるinodeがあります(完全にコピーされ、他のファイルが処理されているにもかかわらず)。
rsync
欠点は、コマンドの実行が完了した後にほとんどのファイルが解放されても、ソース内のすべてのファイルの一時コピーを最初に作成するのに十分なスペースが必要であることです。
たとえば、絶対に変更されない10個の1GBファイルとバックアップの間に変更される1個の1KBファイルがある場合、追加のディスク容量を約1KBしか使用しない場合でも、そのバックアップを実行するにはまだ10GBの空き容量が必要です。変更されていないファイルは最終的にハードリンクされます。
私はこれを試しましたが、役に立たないようです-H
。進行中にこれらのハードリンクを作成する--inplace
オプションはありますか(したがって、最大のファイルには最小限の空き容量しか必要なく、すべてのファイルは必要ありません)。rsync