(Dari: /programming/15245144/copy-file-permissions-but-not-files , ditutup karena di luar topik)
Saya memiliki dua salinan dari pohon direktori yang sama. Mereka hampir memiliki file yang sama di keduanya (satu versi mungkin memiliki beberapa file tambahan atau hilang). Namun, sebagian besar file memiliki kesamaan untuk kedua direktori (memiliki jalur relatif yang sama dan semuanya).
Asumsikan ini ada di direktori:
version1/
version2/
Masalahnya adalah bahwa izin dalam versi1 / kacau, dan saya ingin menyalin izin dari versi2 /, tetapi melakukannya tanpa mengganti file di versi1 / yang lebih baru.
Apakah ada cara otomatis untuk melakukan ini melalui perintah atau skrip shell?
unix
file-permissions
unix-shell
copying
Mariano Paniga
sumber
sumber
Jawaban:
GNU cp mengetahui
--attributes-only
flag sejak coreutils 8.6sumber
Versi saya
cp
tidak memiliki--attributes-only
bendera, jadi saya mengerjakannya. Diuji secara singkat pada folder sederhana, YMMV.sumber
Anda bisa, tetapi saya tidak berpikir dengan "cara otomatis"!
GNU chown dan GNU chmod memiliki
--reference=RFILE
parameter yang dapat Anda gunakan.Ini menggunakan
RFILE
pengaturan (izin, pemilik, grup, dll.) Dan menyalinnya keyourfile
.manual menjelaskan lebih detail.
sumber
Dalam kasus saya, saya menyelesaikannya dengan menggunakan perintah "stat" dengan "find" dan "vi" untuk membuat skrip yang menerapkan izin.
Ke dalam "vi" saya memasukkan ke dalam semua baris perintah "chmod":
%s/^/chmod /g
Saya menyalin script diversion2/
direktori dan menjalankannya.Solusi lain tampaknya valid tetapi saya tidak mengujinya untuk berjaga-jaga.
sumber
Terinspirasi oleh jawaban Mariano Paniga, saya pikir saya punya yang lebih baik, yang tidak perlu vi dan mencari / mengganti perintah. Saya bahkan ingin menyalin info kepemilikan juga (uid / gid).
Anda dapat menyesuaikan perintah di dalam
stat -c '...'
menjadi apa pun yang Anda inginkan. Untuk semua opsi yang tersedia, lihatman stat
.sumber