rsync を使用してバックアップを設定しています。それを指すシンボリックリンクを使用してルートソースディレクトリを指定したいのですが、アーカイブされたツリーの残りの部分については、シンボリックリンクを保持したいと思います。
さらに、シンボリックリンク名をバックアップアーカイブのルートとして保持したいと思います。
このセットアップの理由 (非常にスマートである場合もそうでない場合もあります) は、ソースがバージョン管理されたアプリであり、バージョン番号が時間の経過とともに増加するためです。最新バージョンのみをバックアップし、rsync で古いファイルをバックアップ アーカイブから削除したい。
ソースの例:
source_symlink -> source-1.2.3
source-1.2.3/
file1.txt
dirA/
fileA.txt
symlink_fileA -> dirA/fileA.txt
これをバックアップしようとすると
rsync -av --delete source_symlink destination_dir
目的地内のシンボリックリンクのコピーを取得するだけです。このような:
destination_dir/
source_symlink -> source-1.2.3
つまり、存在しないディレクトリを指すシンボリックリンクです。
たとえば、次のように、シンボリックリンクを自分で解決する場合:
rsync -av --delete $(readlink -f source_symlink) destination_dir
私は以下を取得します:
destination_dir/
source-1.2.3/
file1.txt
dirA/
fileA.txt
symlink_fileA -> dirA/fileA.txt
これは、シンボリックリンクを次のバージョンなどに変更するまで問題ありません。例えばsource_symlink -> source-2.0.0
。その場合、アーカイブに重複が発生します。
destination_dir/
source-1.2.3/
source-2.0.0/
私が望むのは、ルート シンボリック リンクがたどられることですが、残りのシンボリック リンクは保持されます。さらに、宛先ディレクトリにシンボリックリンク名を付けたいと思います。このような:
destination_dir/
source/
file1.txt
dirA/
fileA.txt
symlink_fileA -> dirA/fileA.txt
これを達成することは可能ですか?