Kaynak ağacın bağlı olduğu bir noktada rsync'e dosyalardaki zaman damgasını korumasını söyleme


41

Bu soru ile ilgili

Sorunun kısa açıklaması:

Kaynak ağacın içine monte edilmiş bir nokta olduğunda, hedef ağaca kopyalandığında bu monte edilmiş noktadaki dosyalara zaman damgaları, -aseçenek kullanılırken bile korunmaz

Detaylı Açıklama:

Bunun kaynak ağaç olduğunu varsayalım:

                       /home/                           /home/
                         |                                |
                        me/                             BACKUP/
                         |                                |
                    +----+----------+                +----+-------+
                    |    |          |                |    |       |
                 data/  foo.txt    boo.txt         data/ foo.txt boo.txt
                    |                                |
                   a.txt                           a.txt

nerede data/yukarıdaki isimli harici USB disk monte. Her şey ext4dosya sistemidir. Kaynaktaki her şey benim me.

BACKUP ayrıca bir yedekleme noktası oldu, yedek USB disk.

Bu komutu verdikten sonra , bu dosyalar ve altındaki her şeyin şu anki zaman damgasına sahip rsync -av --delete /home/me/ /home/BACKUP/olduğunu buldum, /home/BACKUP/data/sanki bu dosyalar şimdi oluşturulmuş ve içinde bulunan zaman damgası değil /home/me/data/. Dışındaki diğer dosya ve klasörler datazaman damgasını korumalıydılar.

Soru şudur: rsyncYukarıdaki ayarda, tüm dosyalar ve klasörlerdeki zaman damgasını, bağlı bir noktadaki dosyalar ve klasörler üzerinde bile korumak için nasıl kullanılır ?

Ben kullanıyorum:

>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

Yanıtlar:


45

from man rsync:

   -t, --times                 preserve modification times

EDIT - bu cevabı geliştirmek için bunun neden OP'ye yardım etmediği hemen belli olmadığı için:

OP, dosyaları bir dosya sisteminden diğerine kopyalamak ve korumak istiyor c-time. Çoğu insan c-time, çoğu UNIX / Linux sisteminde (Windows dosya sistemleri "oluşturma" veya "doğum" zamanlarını izler) yanlış olan "zaman oluşturma" anlamına gelir.

Çoğu c-timezaman , UNIX ve Linux'ta, son inode ' C ' değişimini kaydetmek için kullanılan zaman damgasıdır. Özniteliklerinden herhangi biri güncellenirse bir inode değişir:

OP, c-timedosyalarının sayısını yeni bir dosya sistemine getirildiklerinde koruyamaz . Bu dosyaların yeni dosya sistemlerinde oluşturulması, yukarıda listelenen koşullardan biridir (inode / file'ın oluşturulması).

/DÜZENLE


9
Teşekkür ederim. Bunu biliyorum. Fakat lütfen soruyu tekrar dikkatlice okuyunuz. -aHangi diyordu kullandım : archive mode; equals -rlptgoD bunun -tiçin zaten dahil.
Nasır

1
değişim zamanını korumaya mı çalışıyorsun? ctime "yaratılmadı" için DEĞİLDİR (durum) değişimi için
h3rrmiller

1
Takılı diskte olmayan dosyalarda olduğu gibi çalışmasını istiyorum. yani bir ls -ldosya üzerinde çalışırken gördüğünüz aynı zaman damgasını saklayın . Bu, bağlama noktası içinde olmayan dosyalar üzerinde çalışır. Ancak bağlama noktasının içindeki tüm dosyaların, henüz oluşturulduğunu gösteren zaman damgası vardır. Bu sefer ne diyorsan. Sadece kaynaktaki dosyalara aynı zaman damgasını kullanmasını istedim. Şimdi değil. Bütün zamanların kopyalanmasını istiyorum. yani dosyanın bir klonu yapılır. yaratma zamanı, zaman değiştir, vb ...
Nasır

4
değişim zamanı (ctime) inode'daki bir değişiklikle güncellenir (ör. oluşturma / izin değişikliği / taşınma / vb.). yeni bir inode oluşturduğunuz için (dosyayı bir dosya sistemine kopyaladığınızdan (ayrı inode tabloları) ctime güncellendiğinden, bunun yolu yoktur, çünkü inode değişikliğidir, çünkü dosyaya değil. en.wikipedia.org/wiki/Stat_(system_call)#ctime
h3rrmiller

3
ls -lmtime gösterir (değiştirir) ctime değil
h3rrmiller

6

hr3miller'in dediği gibi, -a (veya - arşive) -rlptgoD'ye eşittir ve zaten senkronizasyon süresini de içerir.

Bununla birlikte, rsync verileri örneğin kopyalarsa. kullanıcının ve sahibinin korunmasının başarısız olduğu bir NFS / FAT32 / NTFS bağlantısı, rsync zamanı ayarlamaya çalışmaz. Rsync gibi bir şeyle uyarır

rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)

Bu nedenle, kullanıcı ve grubu koruyarak

-rlptD

yerine

-rlptgoD

Bunu yalnızca sahibi ve grubu korumadığı zaman kullanın, sizin için bir seçenektir. Sembolik bağlantıların ve diğer özelliklerin korunmasının da bu davranışı tetikleyebileceğini unutmayın. Yedeklemek istediğiniz her rsync özelliği (-r -l -p -t -g -o -D) için man sayfasından geçmeniz gerekecektir.


-2

Kullandığım rsync -azve emin şey bana değişiklik zamanını korur. Hemen şimdi kontrol ettim.


2
Çünkü -a( --archive) içeriyor -t.
heemayl

Ancak hayır, ctime keyfi sıfırlanamaz. (Soruyu başlangıçta yanlış anladım, özür dilerim.)
Mik
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.