Son değiştirilme zamanını değiştirmeden unix'te bir dosyayı nasıl kopyalayabilirim?


89

Bir dosyayı kullanarak bir yerden başka bir yere cpkopyalarsam, kopyalanan dosyadaki zaman damgası kopya zamanına ayarlanır.

Bundan kaçınmanın bir yolu var mı?

Zaman damgalarını değiştirmeden dosyaları kopyalamam gerekiyor.

Yanıtlar:


103

cp -phile yapar. Linux için :

-p ile aynı --preserve=mode,ownership,timestamps

FreeBSD için :

-p Kopyada her kaynak dosyanın aşağıdaki özniteliklerini korumaya neden olan cp: değişiklik zamanı, erişim zamanı, dosya bayrakları, dosya modu, ACL, kullanıcı kimliği ve izinlerin izin verdiği şekilde grup kimliği.

Ve OS X için :

-pKopyada her kaynak dosyanın aşağıdaki özniteliklerini korumaya neden olan cp: izin zamanının izin verdiği şekilde değişiklik zamanı, erişim süresi, dosya bayrakları, dosya modu, kullanıcı kimliği ve grup kimliği. Kaynak çatalları dahil olmak üzere Erişim Kontrol Listeleri (ACL'ler) ve Genişletilmiş Nitelikler (EA) da korunacaktır.


25
cp -a da bilmek güzeldir, sadece -p'yi değil tüm dizinleri kopyalamak için -R'yi ve bağlantıları korumak için -d'yi belirtir.
casualuser

2
GNU Coreutils kullanırken cp -psadece zaman damgasını korumakla kalmaz, aynı zamanda modu ve mülkiyeti ve FreeBSD'de değişiklik zamanının yanı sıra, erişim zamanını, dosya bayraklarını, dosya modunu, ACL'yi, kullanıcı kimliğini ve grup kimliğini de koruduğunu unutmayın. izinlere göre. «ve OS X'de ayrıca» kaynak çatalları dahil olmak üzere Genişletilmiş Özellikler ».
Stefan Schmidt,

En son OSX'te, cp -p hala kaynak dosyanın zaman damgasını dokunuyor
afathman

15

Kullanırken cpgelen GNU coreutils Giriş Uzun yoktur Böyle bir kullanıcı kimliği, grup kimliği veya dosya modu olarak sadece damgaları değil özelliklerini korumak için --preserveaçıkça korunmuş olması özniteliklerin listesini belirlemenizi sağlar.

cp --preserve=timestamps source destination

Bu sözdiziminin muhtemelen diğer Unices'de desteklenmediğini unutmayın. Bir alternatifi , çoğu kurulumda mevcut olan --timesparametresini kullanmak olabilir rsync.


4
Bu doğru cevap. Kullanmak -pdoğru cevap değildir. -psahiplik ve modu da korur. İstenmeyebilecek olan .. ve soru sorulmadı.
bshea

10

Bir Unix dosya sisteminde üç kez, erişim zamanı (atime), değişiklik zamanı (mtime) ve inode değişim zamanı (ctime) vardır. Erişim zamanını ve değiştirme zamanını örneğin dokunmatik programla değiştirebilirsiniz.

cp orig kopya
dokunmatik -r orig kopya

Bununla birlikte, inode değişim zamanını değiştiremezsiniz.



0

Son zamanlarda benzer bir şey yapmam gerekiyordu, bunun yerine sembolik bağlantı kullandım. Bir sembolik bağlantı oluşturmak ve orignal zaman damgasını korumak için:cp -ps src_file dst_symlink


Bir yorum olarak, birkaç okuyucu için faydalı olabilir, bir cevap olarak çoğu okuyucu için gürültü ekler.
ndemou
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.