共通ファイルを含むディレクトリをあるパーティションから別のパーティションに移動するには?
/mnt/X
ハードリンクを介してファイルを共有するディレクトリを含むパーティションをマウントしたとします。これらのディレクトリを別のパーティションに移動して/mnt/Y
ハードリンクを維持するにはどうすればよいですか?
「ハードリンクでファイルを共有するディレクトリ」の意味をよりよく説明するには、次の例を参照してください。
# let's create three of directories and files
mkdir -p a/{b,c,d}/{x,y,z}
touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5}
# and copy it with hardlinks
cp -r -l a hardlinks_of_a
具体的には、全体のファイルサイズが10Gで、各ファイルに10個のハードリンクがあるとします。問題は、10Gを使用してターゲットに移動する方法です。 (100Gにコピーしてから重複排除を実行すると言うこともできます。これは私が尋ねるものではありません。)
ベストアンサー1
rsyncにはこれまたは-H
オプション--hard-links
があり、停止して再起動することができ、最後の実行中または以降に変更されたすべてのファイルを効率的に処理するために再実行できるという一般的なrsync利点があります。
-H, --hard-links
This tells rsync to look for hard-linked files in
the source and link together the corresponding
files on the destination. Without this option,
hard-linked files in the source are treated as
though they were separate files. [...]
rsync
マニュアルページを読み、-H を検索します。特定の警告の詳細があります。