Bagaimana cara menyalin file di unix tanpa mengubah waktu modifikasi terakhirnya?


89

Jika saya menyalin beberapa file dari satu tempat ke tempat lain menggunakan cp, cap waktu pada file yang disalin diatur ke waktu salinan.

Apakah ada cara untuk menghindari ini?

Saya perlu menyalin file tanpa mengubah stempel waktu mereka.

Jawaban:


103

cp -plakukan triknya. Untuk Linux :

-p sama dengan --preserve=mode,ownership,timestamps

Untuk FreeBSD :

-p Penyebab cp untuk mempertahankan atribut berikut dari setiap file sumber dalam salinan: waktu modifikasi, waktu akses, flag file, mode file, ACL, ID pengguna, dan ID grup, sebagaimana diizinkan oleh izin.

Dan untuk OS X :

-pPenyebab cp untuk mempertahankan atribut berikut dari setiap file sumber dalam salinan: waktu modifikasi, waktu akses, flag file, mode file, ID pengguna, dan ID grup, sebagaimana diizinkan oleh izin. Daftar Kontrol Akses (ACL) dan Atribut yang Diperpanjang (EA), termasuk garpu sumber daya, juga akan dipertahankan.


25
cp -a juga bagus untuk diketahui, itu tidak hanya berarti -p, tetapi juga -R untuk menyalin seluruh direktori dan -d untuk menjaga tautan.
kasual

2
Perhatikan bahwa ketika menggunakan GNU Coreutils cp -ptidak hanya mempertahankan cap waktu tetapi juga mode dan kepemilikan dan pada FreeBSD selain waktu modifikasi itu juga mempertahankan »waktu akses, flag file, mode file, ACL, ID pengguna, dan ID grup, sebagaimana diizinkan berdasarkan izin. «dan pada OS X tambahan» Atribut Diperpanjang, termasuk garpu sumber daya «.
Stefan Schmidt

pada OSX terbaru, cp -p masih menyentuh stempel waktu file sumber
afathman

15

Saat menggunakan cpdari GNU Coreutils , untuk mempertahankan hanya stempel waktu dan bukan atribut seperti id pengguna, id grup atau mode file ada tugas lama --preserveyang memungkinkan untuk secara eksplisit menentukan daftar atribut yang harus dipertahankan.

cp --preserve=timestamps source destination

Ketahuilah bahwa sintaks ini mungkin tidak didukung pada Unix lain. Alternatifnya adalah menggunakan --timesparameter rsyncyang harus tersedia pada sebagian besar instalasi.


4
Ini jawaban yang benar. Menggunakan -pbukanlah jawaban yang benar. -pmempertahankan kepemilikan & mode juga. Yang mungkin tidak diinginkan .. dan tidak ditanyakan.
bshea


0

Saya baru-baru ini perlu melakukan sesuatu yang serupa tetapi menggunakan symlink sebagai gantinya. Untuk membuat symlink dan menyimpan stempel waktu orignal:cp -ps src_file dst_symlink


Sebagai komentar, ini dapat bermanfaat bagi beberapa pembaca, sebagai jawaban yang menambah kebisingan bagi sebagian besar pembaca.
ndemou
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.