これに関連して 質問
問題の短い説明:
ソースツリー内にマウントポイントがある場合、ターゲットツリーにコピーしたときのそのマウントポイント内のファイルのタイムスタンプは、-a
オプションを使用しても保持されません。
詳細な説明:
これがソースツリーであると想定します。
/home/ /home/
| |
me/ BACKUP/
| |
+----+----------+ +----+-------+
| | | | | |
data/ foo.txt boo.txt data/ foo.txt boo.txt
| |
a.txt a.txt
上記のdata/
は、外部USBディスクにマウントされています。すべてがext4
ファイルシステムです。ソース内のすべてのものは私のme
が所有しています。
BACKUP
も、たまたまマウントポイントであるバックアップUSBディスクです。
このコマンドrsync -av --delete /home/me/ /home/BACKUP/
を発行した後、/home/BACKUP/data/
およびその下にあるすべてに、これらのファイルが/home/me/data/
内のファイルのタイムスタンプではなく、現在作成されているかのように現在のタイムスタンプがあることがわかりました。 data
外の他のファイルとフォルダーは、タイムスタンプが正しく保持されました。
質問です:上記の設定でrsync
を使用して、マウントされたポイントのファイルとフォルダーでもすべてのファイルとフォルダーのタイムスタンプを保持するように指示するにはどうすればよいですか?
使っています:
>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
>rsync -v
rsync version 3.0.9 protocol version 30
man rsync
から:
-t, --times preserve modification times
編集-なぜこれがOPを助けなかったのかすぐに明らかではないので、この答えを改善するために:
OPはファイルシステム間でファイルをコピーしており、c-time
を保持したいと考えています。ほとんどの人はc-time
が「作成時間」を意味することを理解していますが、これはほとんどのUNIX/Linuxシステムでは正しくありません(Windowsファイルシステムは「作成」または「誕生」時間を追跡します)。
ほとんどの場合、UNIXおよびLinuxでは、c-time
は、最後のiノードを記録するために使用されるタイムスタンプです '[〜#〜] c [〜#〜] 'hange。属性が更新されると、iノードが変更されます。
OPは、新しいファイルシステムに移動したときに、ファイルのc-time
を保持できません。新しいファイルシステムでのこれらのファイルの作成は、上記の条件の1つです(inode /ファイルの作成)。
/編集
hr3millerがすでに言ったように、-a(または--archive)は-rlptgoDと等しく、同期時間をすでに含んでいます。
ただし、rsyncがデータをコピーする場合など。ユーザーと所有者の保持に失敗したNFS/FAT32/NTFSマウントでは、rsyncは時刻を設定しようとしません。 Rsyncは次のような警告を出します
rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)
したがって、次を使用してユーザーとグループを保持しないでください。
-rlptD
の代わりに
-rlptgoD
所有者とグループを保持しない場合にのみこれを使用してください。シンボリックリンクやその他の機能を保持すると、その動作もトリガーされることに注意してください。バックアップするすべてのrsync機能(-r -l -p -t -g -o -D)のマニュアルページを参照する必要があります。