2

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

これを達成することは可能ですか?

4

1 に答える 1