Salin file tanpa kehilangan izin file / folder

36

Bagaimana saya bisa menyalin file / folder dari komputer ubuntu pada sistem file ext4 ke komputer ubuntu lain yang juga ada pada sistem file ext4, menggunakan stik usb yang menggunakan sistem file vfat tanpa kehilangan izin file?

Saya sudah mencoba ctrl-c dasar dari komputer sumber, lalu ctrl-v ke usb, lalu ctrl-c dari usb lalu ctrl-v ke komputer target, dan tidak ada izin file / folder yang tetap utuh.

oshirowanen
sumber
vfattidak mendukung izin sistem file unix. Anda harus menyimpannya di tarball, atau yang serupa, jika Anda ingin menyimpannya.
Alex L.
mengapa tidak rsync, seperti yang saya sarankan?
SiddharthaRT

Jawaban:

56

Anda dapat membuat arsip tar dari sumbernya, menyalinnya ke komputer lain menggunakan drive USB, dan mengekstraknya di sana. Tar mempertahankan izin file.

1 - Di komputer sumber:

cd /path/to/folder/to/copy
tar cvpzf put_your_name_here.tar.gz .

2 - Salin put_your_name_here.tar.gzke drive USB dan kemudian ke komputer lain

3 - Di komputer tujuan:

cd /path/to/destination/folder
tar xpvzf put_your_name_here.tar.gz

tar akan membuat ulang struktur folder yang diarsipkan dengan semua izin utuh.

Perintah-perintah itu akan mengarsipkan isi folder sumber dan kemudian mengekstraknya ke folder tujuan. Jika Anda ingin menyalin folder itu sendiri, maka Anda harus, pada langkah 1:

cd /path/to/parent/folder
tar cvpzf put_your_name_here.tar.gz folder_to_copy

Mekanisme yang sama dapat digunakan untuk file tunggal.


Jika Anda dapat terhubung dari satu komputer ke komputer lainnya menggunakan ssh, @siddharthart answer ( rsync) mungkin lebih praktis.

sierrasdetandil
sumber
Jangan lupa -pbendera taruntuk memastikan izin dilestarikan.
haziz
@haziz Sebenarnya, -pitu tidak benar-benar diperlukan, lihat komentar saya untuk jawaban @ mikewhthing. Itu -zjuga tidak perlu ketika untarring, karena tardapat mengetahui jenis kompresi itu sendiri, kecuali itu versi lama. Termasuk bendera dalam perintah tidak sakit, sulit.
sierrasdetandil
3
Saya tidak berpikir Anda dapat mengandalkan perilaku ini. Kutipan BTW dari halaman man tar "-p, --preserve-permissions, --same-permissions mengekstrak informasi tentang izin file (default untuk superuser)" ini tampaknya menjadi perilaku default hanya jika tar diarungi sebagai superuser. Tidak akan menganggap ini sebagai perilaku default. Saya juga akan selalu mengeja -zflag secara eksplisit saat mengompresi atau mendekompresi (atau -jjika menggunakan bzip2).
haziz
Bisakah enkripsi (dasar) mudah ditambahkan? (Saya kira akan ada banyak cara untuk melakukannya, tapi saya bertanya-tanya, tetapi jika dilakukan melalui baris perintah, bagaimana kata sandi / kunci enkripsi / frasa sandi diberikan? Seperti begitu ******** atau seperti sudo-kata sandi, di mana tidak ada tombol-stroke dibuat terlihat?)
gila tentang rapi
tarmenderita masalah yang sangat serius - ia tersedak jalur lebih dari 100 karakter.
Nathan Osman
12

Anda dapat mencoba rsyncdengan -abendera untuk mempertahankan semua izin saat menyalin. Saya tidak mengetahui solusi yang lebih sederhana, tetapi saya telah menggunakannya untuk suatu tujuan di masa lalu.

Rsync memberikan dukungan yang brilian untuk penyalinan berulang, memperbarui folder, dll, namun tetap sangat cepat.

SiddharthaRT
sumber
6
Saya memang suka rsync(suka, sebenarnya: -]), tetapi izin file ext4 akan hilang jika perangkat tujuan diformat vfat, seperti dijelaskan oshirowanen. The tarsolusi adalah lebih baik dalam hal ini.
yuric
6

Saya pikir taring dan kemudian tidak peduli harus bekerja pada kedua file dan direktori.

untuk tar:

tar cvpfz /target.tar.gz /source/

untuk untar:

tar xvpfz /source/

The pbendera singkatan --preserve-permissions.

Anda harus melihat man taruntuk info lebih lanjut.

mikewhthing
sumber
Saya baru saja melakukan tes cepat untuk memastikan dan -ptidak diperlukan - tar mempertahankan izin secara default, setidaknya ketika pengguna memiliki file yang diarsipkan / diekstraksi.
sierrasdetandil
2
Benar, tetapi Anda belum memberi tahu kami file apa yang ingin Anda salin, dan saya tidak punya alasan untuk mengambil sendiri.
mikewhever