絶対シンボリックリンクのみrsyncする方法はありますか?

絶対シンボリックリンクのみrsyncする方法はありますか?

2台のコンピュータ間で大規模なフォルダ階層を同期させたい。シンボリックリンクの内容をコピーしたい(絶対的な場合)。たとえば、/some/folder/someFile シンボリックリンクの内容を維持したい(相対的な場合)。たとえば、../../somefolder これを行うには?

編集する: 基本的に私は再帰を避けようとします。絶対リンクをコピーしますが、リンクを保持せずに内部リンクまたは相対リンクをスキップする --copy-unsafe-links オプションを試しました。

答え1

--copy-unsafe-linksrsyncのオプションを使用して、シンボリックリンクが同期されたフォルダスペースの外側を指すファイルデータをコピーできるはずですが、指定されたファイルも同期されたときにのみシンボリックリンクを送信できると思います。これは--links(に含まれる)-lに追加され、コピーされ-aた階層内の相対シンボリックリンクをシンボリックリンクにコピーするために使用されます。

十分に詳細でない場合は、送信したくないリンクリストを作成し、それらをインクルードfind/除外リスト形式の入力に渡す必要があるかもしれません。rsync

答え2

このrsyncコマンドを使用してください。

rsync -vrtil --copy-unsafe-links --log-file=(logfile) (source_dir) (dest_dir)

到着する:

  1. ローカルシステムに関連するシンボリックリンクを維持する

  2. 絶対リンク(たとえば、「/」で始まる)の場合、シンボリックリンク(「参照オブジェクト」など)が指すファイル/ディレクトリがターゲットにコピーされます。

#1の例:この例では、ソース側に2つのファイル、つまりシンボリックリンクとリンクされたファイル(例:「参照オブジェクト」、つまりdocs_home.htm)があります。

(prompt): ls -al docs*
-rwxr-sr-x 1 (owner) (group) 8853 Jul 31  2019 docs_home.htm
lrwxrwxrwx 1 (owner) (group)   13 May 31  2019 docs_home.html -> docs_home.htm

ターゲット(つまり、ターゲット)側で上記のrsyncコマンドを実行すると、次のようになります。

(prompt): ls -al docs*
-rwxr-sr-x 1 (owner) (group) 8853  Jul 31  2019 docs_home.htm
lrwxrwxrwx 1 (owner) (group)   13 May 31  2019 docs_home.html -> docs_home.htm

#2の例:ソース側には次のリンクがあります。

lrwxrwxrwx 1 (owner) (group) 59 Sep 14  2011 Document13.pdf -> /projects/proj_name/proj_subdir/Document13.pdf

ターゲット(「ターゲット」)側で上記のrsyncコマンドを実行した後、「ls -al」の実行結果の次の部分に示すように、ファイル自体がコピーされました。

-rwxrwxr-x  1 (owner) (group) 45874 Sep 14  2011 Document13.pdf

関連情報