Mengubah atribut "Tanggal Dibuat" dan "Modifikasi Terakhir" ke file lain

40

Saya menggunakan cap gabungan untuk membuat file pcap gabungan dari 15 file. Untuk file yang digabungkan, saya telah mengubah nama menjadi yang pertama dari 15 file. Tapi saya juga ingin mengubah atribut file yang digabungkan seperti "Tanggal Dibuat" dan "Dimodifikasi Terakhir" dengan yang pertama. Apakah ada cara untuk melakukan ini?

FILES_dcn=($(find  $dir_dcn -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $9}'))
TAG1_dcn=$(basename "${FILES_dcn[14]}" | sed 's/.pcap//')
mergecap -w  "${dir_dcn}"/merge_dcn.pcap "${FILES_dcn[@]}"
mv  "${dir_dcn}"/merge_dcn.pcap  "${dir_dcn}"/"${TAG1_dcn}".pcap

Saya mencoba mengakses file yang digabungkan melalui server samba (Ubuntu). Sehingga fungsi extractor dapat mengakses secara otomatis ekstrak file ke folder D. Tetapi karena tanggal yang dibuat akan diubah untuk file yang digabungkan ekstraksi gagal. Apakah ada cara untuk memperbaikinya?

Jishnu U Nair
sumber

Jawaban:

77

Anda dapat menggunakan touchperintah bersama dengan -rsaklar untuk menerapkan atribut file lain ke file.

CATATAN: Tidak ada tanggal pembuatan di Unix, hanya ada akses, modifikasi, dan perubahan. Lihat U&L Q&A ini berjudul: dapatkan umur file yang diberikan untuk perincian lebih lanjut.

$ touch -r goldenfile newfile

Contoh

Misalnya tujuan inilah goldenfileyang dibuat dengan cap waktu sewenang-wenang.

$ touch -d 20120101 goldenfile
$ ls -l goldenfile 
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

Sekarang saya membuat beberapa file baru:

$ touch newfile
$ ls -l newfile 
-rw-rw-r--. 1 saml saml 0 Mar  7 09:06 newfile

Sekarang terapkan goldenfileatribut ke newfile.

$ touch -r goldenfile newfile 
$ ls -l goldenfile newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

Sekarang newfilememiliki atribut yang sama.

Ubah melalui Samba

Saya baru saja mengkonfirmasi bahwa saya dapat melakukan ini dengan menggunakan laptop Fedora 19 saya yang mencakup versi 1.16.3-2 yang terhubung dengan Thecus N12000 NAS (menggunakan versi modifikasi dari CentOS 5.x).

Saya dapat menyentuh file seperti yang saya sebutkan di atas dan itu berfungsi seperti yang saya jelaskan. Masalah Anda kemungkinan adalah masalah dengan opsi pemasangan yang digunakan, yang mungkin menghilangkan pelacakan atribut waktu tertentu, atau mungkin terkait dengan salah satu bug ini:

slm
sumber
@ JishnuUNair - dapatkah Anda memeriksa untuk melihat bagaimana pembagian Samba sedang dipasang (dengan opsi apa)? Anda biasanya dapat memperoleh ini dari mountperintah dan kemudian mencari bagian yang Anda akses. Hanya tebakan tetapi kemungkinan sedang dipasang gunakan gvfs sebagai sistem file FUSE.
slm
1
Banyak sistem file sekarang mendukung waktu pembuatan file. Untuk ext4, Anda dapat melihat / mengubahnya melalui debugfs(meskipun ini membutuhkan hak akses root dan tidak digunakan di sini). Lihat pertanyaan ini - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
Graeme
@ Greme - ya saya baru saja mereferensikan metode serupa menggunakan stap: unix.stackexchange.com/questions/91197/… di chatroom.
slm
1
Meskipun Linux tidak mendukung waktu pembuatan, berbagi Samba dapat. Bergantung pada bagaimana Anda mengaturnya (dan dukungan xattr dalam sistem file), Samba memiliki kemampuan untuk menyimpan beberapa perangko waktu di xattrs Linux. Itu berarti dapat melakukan hal-hal yang tidak dapat dilakukan oleh sistem file yang mendasarinya - seperti melaporkan waktu pembuatan yang valid (dapat dimodifikasi). Maaf, saya tidak menemukan tautan yang bagus untuk mengetahui cara kerjanya.
Peter
1
Sebenarnya sebagian besar sistem file Linux (mis. Ext4) sekarang mendukung tanggal pembuatan, dan Linux 4.11 akan memiliki statx()panggilan untuk mengambilnya. Akhirnya.
Jez
36

Cara termudah - diakses yang diubah akan sama:

touch -a -m -t 201512180130.09 fileName.ext

Dimana:

-a = accessed
-m = modified
-t  = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format

Jika Anda ingin menggunakan NOWcukup jatuhkan tdan cap waktu

Untuk memverifikasi semuanya sama: stat fileName.ext

Lihat: sentuh pria

Jadeye
sumber
5
Entah bagaimana pada ubuntu 14.04 meletakkan -asebelum -mtidak mengubah waktu akses ... letakkan setelahnya, jadi:touch -m -a -t....
Jadeye
5
-d time_stringmungkin lebih mudah daripada -t: -d "2004-02-29 16:21:42"
yurenchen