毎晩、cron
ジョブを使ってrsync
を実行し、ホームディレクトリを外部ドライブにバックアップしたいと思っています。rsync
のシンボリックリンクフラグの正確な挙動がわかりません
rsync
の-a
フラグには-l
フラグが含まれています (つまり、「シンボリックリンクをシンボリックリンクとしてコピーする」)。これは単にリンクをコピーするという意味なのでしょうか、それともリンクを追ってリンク先のディレクトリのすべてをコピーするという意味なのでしょうか?私は、メディアファイルでいっぱいのディレクトリへのリンクを持っていて、バックアップする必要のない何百ギガバイトものファイルをコピーしなければならないので、それを避けたいのですrsync -a
がすべてのメディアファイルをコピーしてしまうのではないかと心配して(確信はありませんが)、代わりに--no-links
フラグを追加しました。これは私が望む動作ではないようです。これは、コピーしたいリンク(例えば、異なるプロジェクトディレクトリから共通のヘッダファイルへのリンク)があるので、問題となるリンクのコピーを無視するだけです- 上の #1 (
--no-links
フラグなし) が本当に欲しいもので、リンク先のファイルをコピーせずにリンクをコピーするだけだと仮定すると、リンクがバックアップされたときにリンクが切れてしまうのでしょうか?例えば、私はrsync
ソースディレクトリ/home/me/projects/misc
を/media/extdrive/backup/home/me/projects/misc
にコピーするかもしれません。この場合、rsync
は十分に賢くないし、相対ディレクトリの変更に対してシンボリックリンクの内容を修正しようともしないと仮定します。これは正しいのでしょうか?これは大丈夫です。バックアップディレクトリでリンクが壊れていても問題ではありません
92 sean 2014-08-18
“シンボリックリンクをシンボリックリンクとしてコピーする” とは、その言葉通りの意味です: rsync がソースディレクトリでシンボリックリンクを見た場合、宛先に同一のシンボリックリンクを作成します。それ以上のことはありません
(マニュアルページの数行下の
--copy-links
という別のオプションでは、望ましくないと記述した反対の動作(常にデータをコピーする)を記述しています)シンボリックリンク」の項も参照してください
--links
が指定された場合、シンボリックリンクは宛先の同じターゲットで再作成されます--links
が何をするかを誤解して、間違った行動を求めているので、あなたが望む行動ではありません(答え#1参照)デフォルトでは、宛先を正確にコピーします
つまり、リンクが絶対パス(
/home/me/projects
など)を指している場合、同じパスを指し続けます一方、リンクが相対パス(
../../projects
など)を指していた場合、同じパスを指し続けますが、シンボリックリンクの場所からの相対パスなので、バックアップ内のシンボリックリンクもバックアップ内のファイルを指していることになります残念ながら、シンボリックリンクの絶対リンクを新しいベースに変換するオプションはないようです (シンボリックリンクを完全に壊すオプションのみ)。問題を避けるためには、既存のシンボリックリンクを相対的なものに変更する必要があります (一般的には $HOME 内のリンクの場合はこれが良い考えです)
113 user1686 2014-08-18
grawityさんの回答は素晴らしいものですが、ここではドキュメントからの関連情報のスクリーンショットをいくつか紹介します。例えば、-l
と-L
オプションの正確な表現は以下の通りです
ソースは以下の通りです。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