古いバックアップが複数あり、各バックアップは最後のバックアップの増分変更を含むディレクトリです。各ディレクトリの下には、ランダムなネストされたディレクトリとファイルがあります。これらすべての変更をマージする1つのディレクトリに移動する必要があります。最も古いバックアップから始まり、複数のバックアップで同じように見えるファイルのすべてのバージョンを維持する必要があります。ファイルをコピーするのではなく移動する必要があります。しかし、後続の削除のために各ソースに空のディレクトリフレームが残っていれば問題ありません。
私が見つけたこの回答私が望むすべてを行うには、rsyncコマンドを一緒にまとめる必要がありますが、必要なすべてのコンポーネントがあるようです。しかし、動作しません。私のコマンドは次のとおりです。
rsync -Ea --link-dest=/tmp/test1/ --remove-source-files -b --backup-dir=/tmp/test2/ --info=BACKUP,COPY,DEL,FLIST,MISC,MOUNT,NAME,PROGRESS,REMOVE,SKIP,STATS,SYMSAFE test1/ test2/
このinfo
コマンドは、rsyncが実行する操作を確認しようとしていることに注意してください。みんな可能な信号は、リンクを生成するファイルがまだ公開されていないことです!
しかし、より難しい問題は、このコマンドが実際にバックアップを作成しないことです。そのオプションを省略しようとしましたが、--backup-dir
同じ結果が得られました。私も--suffix=~
どちらの場合も追加しようとしました。バックアップファイルは作成されません!
たとえば、上記のコマンドを実行する前に、「test1/1.txt」と「test2/1.txt」を別の内容で作成しました。 rsync を実行した後、「test2/1.txt」が「test1/1.txt」を上書きしました。これらの-b
オプションを使用しているので、元の1.txt
ファイルをバックアップファイル(例:1.txt~
。