linux – rsync とシンボリックリンク

linux rsync symbolic-link

毎晩、cronジョブを使ってrsyncを実行し、ホームディレクトリを外部ドライブにバックアップしたいと思っています。rsync のシンボリックリンクフラグの正確な挙動がわかりません

  1. rsync-a フラグには -l フラグが含まれています (つまり、「シンボリックリンクをシンボリックリンクとしてコピーする」)。これは単にリンクをコピーするという意味なのでしょうか、それともリンクを追ってリンク先のディレクトリのすべてをコピーするという意味なのでしょうか?私は、メディアファイルでいっぱいのディレクトリへのリンクを持っていて、バックアップする必要のない何百ギガバイトものファイルをコピーしなければならないので、それを避けたいのです
  2. rsync -aがすべてのメディアファイルをコピーしてしまうのではないかと心配して(確信はありませんが)、代わりに--no-linksフラグを追加しました。これは私が望む動作ではないようです。これは、コピーしたいリンク(例えば、異なるプロジェクトディレクトリから共通のヘッダファイルへのリンク)があるので、問題となるリンクのコピーを無視するだけです
  3. 上の #1 (--no-links フラグなし) が本当に欲しいもので、リンク先のファイルをコピーせずにリンクをコピーするだけだと仮定すると、リンクがバックアップされたときにリンクが切れてしまうのでしょうか?例えば、私はrsyncソースディレクトリ/home/me/projects/misc/media/extdrive/backup/home/me/projects/miscにコピーするかもしれません。この場合、rsyncは十分に賢くないし、相対ディレクトリの変更に対してシンボリックリンクの内容を修正しようともしないと仮定します。これは正しいのでしょうか?これは大丈夫です。バックアップディレクトリでリンクが壊れていても問題ではありません

  92  sean  2014-08-18


ベストアンサー

  1. “シンボリックリンクをシンボリックリンクとしてコピーする” とは、その言葉通りの意味です: rsync がソースディレクトリでシンボリックリンクを見た場合、宛先に同一のシンボリックリンクを作成します。それ以上のことはありません

    (マニュアルページの数行下の--copy-linksという別のオプションでは、望ましくないと記述した反対の動作(常にデータをコピーする)を記述しています)

    シンボリックリンク」の項も参照してください

    --linksが指定された場合、シンボリックリンクは宛先の同じターゲットで再作成されます

  2. --linksが何をするかを誤解して、間違った行動を求めているので、あなたが望む行動ではありません(答え#1参照)

  3. デフォルトでは、宛先を正確にコピーします

    つまり、リンクが絶対パス(/home/me/projectsなど)を指している場合、同じパスを指し続けます

    一方、リンクが相対パス(../../projectsなど)を指していた場合、同じパスを指し続けますが、シンボリックリンクの場所からの相対パスなので、バックアップ内のシンボリックリンクもバックアップ内のファイルを指していることになります

    残念ながら、シンボリックリンクの絶対リンクを新しいベースに変換するオプションはないようです (シンボリックリンクを完全に壊すオプションのみ)。問題を避けるためには、既存のシンボリックリンクを相対的なものに変更する必要があります (一般的には $HOME 内のリンクの場合はこれが良い考えです)

113  user1686  2014-08-18


grawityさんの回答は素晴らしいものですが、ここではドキュメントからの関連情報のスクリーンショットをいくつか紹介します。例えば、-l-Lオプションの正確な表現は以下の通りです

enter image description here

ソースは以下の通りです。https://linux.die.net/man/1/rsync, または man rsync Linux のマニュアルページ

-a (--archive) オプションには -l オプションも含まれていることにも注意してください。マニュアルページから

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

注:私の好きなrsyncのコマンドと指示については、コピー、ミラーリング、全体の進行状況の表示など

…ドライランの実行、標準エラーと標準出力の(別の)ファイルへのロギング、統計情報の表示、インクルードパスファイルと除外ファイルの使用、などについては、「2. rsyncコマンドラインツール(Linux, Windows with Cygwin)」と題した第2節の下にある私の完全な回答をご覧ください。https://superuser.com/a/1464264/425838

23  Gabriel Staples  2018-12-30


タイトルとURLをコピーしました