rsync
私のファイルのいくつかをバックアップするために使用するもの:
rsync -aEN --delete --link-dest="$CURR/" "$SOURCE/" "$NEW/"
この--link-dest
オプションはほとんどのファイルには機能しますが、シンボリックリンクには機能しません。
以前のバックアップ用のクリーンアップスクリプトを作成したときに、変更されていないシンボリックリンクがハードリンクではなくコピーされたことを確認しました。
今気になります。ハードリンクを不変シンボリックリンクに
する方法はありますか?それ以外の場合:これは意図的なものですか、それともrsyncのバグですか?rsync
私はMac OS 10.11でrsyncバージョン3.1.1を使用しています。
編集する:
これはMac OS Xで発生する問題のようです。何らかの理由でHFS +はシンボリックリンクへのハードリンクをサポートしていないようです。
ベストアンサー1
macOS(HFS +)のファイルシステムはシンボリックリンクへのハードリンクをサポートしていません。
$ touch file
$ ls -l file
-rw-r--r-- 1 kk staff 0 Jun 17 18:35 file
$ ln -s file slink
$ ls -l file slink
-rw-r--r-- 1 kk staff 0 Jun 17 18:35 file
lrwxr-xr-x 1 kk staff 4 Jun 17 18:36 slink -> file
次のコードは通常シンボリックリンクへのハードリンクを生成し、ln
macOSのマニュアルにも文書化されています(編集:いいえ、そうではありません。GNU coreutilsをインストールし、間違ったマニュアルを読まない限り、ああ!)。
$ ln -P slink hlink
$ ls -l file slink hlink
-rw-r--r-- 1 kk staff 0 Jun 17 18:35 file
lrwxr-xr-x 1 kk staff 4 Jun 17 18:38 hlink -> file
lrwxr-xr-x 1 kk staff 4 Jun 17 18:36 slink -> file
参照数(1)によって、新しい名前が生成されなかったことがわかります(有効な場合は両方ともslink
2になります)。また、これは1つのinodeリンク(2つではない)があるシンボリックリンクであることを知らせます。slink
hlink
stat
hlink
$ stat hlink
File: 'hlink' -> 'file'
Size: 4 Blocks: 8 IO Block: 4096 symbolic link
Device: 1000004h/16777220d Inode: 83828644 Links: 1
Access: (0755/lrwxr-xr-x) Uid: ( 501/ kk) Gid: ( 20/ staff)
Access: 2016-06-17 18:38:18.000000000 +0200
Modify: 2016-06-17 18:38:18.000000000 +0200
Change: 2016-06-17 18:38:18.000000000 +0200
Birth: 2016-06-17 18:38:18.000000000 +0200
/bin/ln
編集:GNU coreutilsを使って摘発されたので、macOSでもう一度テストしてみましょう。
$ touch file
$ /bin/ln -s file slink
$ /bin/ln slink hlink # there is no option corresponding to GNU's -P
$ ls -l file slink hlink
-rw-r--r-- 2 kk staff 0 Jun 17 18:59 file
-rw-r--r-- 2 kk staff 0 Jun 17 18:59 hlink
lrwxr-xr-x 1 kk staff 4 Jun 17 18:59 slink -> file
ハードリンクは、を指すfile
代わりにを指しますslink
。
たとえば、LinuxとOpenBSD(私が使用している他のオペレーティングシステム)ではこれを行うことができます。
$ ls -l file slink hlink
-rw-rw-r-- 1 kk kk 0 Jun 17 18:35 file
lrwxrwxrwx 2 kk kk 4 Jun 17 18:43 hlink -> file
lrwxrwxrwx 2 kk kk 4 Jun 17 18:43 slink -> file
(ノート2")