Копіюйте файли, не втрачаючи дозволів на файли / папки


36

Як я можу скопіювати файли / папки з комп’ютера ubuntu в файлову систему ext4 на інший комп'ютер ubuntu, який також є у файловій системі ext4, за допомогою USB-палички, яка використовує файлову систему vfat, не втрачаючи дозволів на файли?

Я спробував базовий ctrl-c з вихідного комп'ютера, потім ctrl-v до usb, потім ctrl-c від usb, потім ctrl-v для цільового комп'ютера, і жоден дозвіл файлу / папки не залишається недоторканим.


vfatне підтримує права доступу до файлової системи unix. Вам потрібно буде зберігати їх у тарболі чи щось подібне, якщо ви хочете їх зберегти.
Алекс Л.

чому б ні rsync, як я запропонував?
SiddharthaRT

Відповіді:


56

Ви можете зробити архів дьогтю джерела, скопіювати його на інший комп'ютер за допомогою USB-накопичувача і витягнути його туди. Тар зберігає дозволи файлів.

1 - На вихідному комп’ютері:

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

2 - Скопіюйте put_your_name_here.tar.gzна USB-диск, а потім на інший комп'ютер

3 - На цільовому комп'ютері:

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

tar відтворить архівовану структуру папок із усіма правами недоторканими.

Ці команди архівують вміст вихідної папки, а потім витягують їх у папку призначення. Якщо ви хочете скопіювати саму папку, на кроці 1 слід:

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

Той самий механізм може бути використаний для одиночних файлів.


Якщо ви можете підключитися з одного комп'ютера до іншого за допомогою ssh, @siddharthart відповідь ( rsync) може бути більш практичним.


Не забувайте -pпрапор, tarщоб забезпечити збереження прав доступу.
haziz

@haziz Насправді, насправді -pце не потрібно, дивіться мій коментар до відповіді @ mikewever. -zТакож не є необхідним , коли розпакування, як і tarв змозі визначити тип самого стиснення, якщо це не стара версія. Включення прапорів до команди не шкодить, жорстко.
sierrasdetandil

3
Я не думаю, що ти можеш розраховувати на таку поведінку. BTW, цитуючи сторінку man tar "" -p, --preserve-permissions, --same-permissions витягує інформацію про дозволи файлів (за замовчуванням для суперпользователя) ", це виглядає як поведінка за замовчуванням, лише якщо тар викликається як супер-користувач. Не розраховувати б на це як на поведінку за замовчуванням. Я також завжди чітко прописував би -zпрапор під час стискання чи розпакування (або -jякщо використовуєте bzip2).
haziz

Чи можна (основне) шифрування легко додати? (Напевно, було б багато способів зробити це, але мені цікаво, але якщо це зробити за допомогою командного рядка, як би постачався пароль / ключ шифрування / пароль? На кшталт ******** або як-от пароль-sudo, де жодних штрихів клавіш не видно?)
гайка про natty

tarстраждає від дуже серйозної проблеми - він задихається на шляхах довжиною більше 100 символів.
Натан Осман

12

Ви можете спробувати rsyncз -aпрапором зберегти всі дозволи під час копіювання. Я не знаю простішого рішення, але я раніше його використовував з метою.

Rsync надає блискучу підтримку неодноразовому копіюванню, оновленню папок тощо, залишаючись надзвичайно швидкими.


6
Мені подобається rsync(люблю це, насправді: -]), але дозволи дозволу на файл ext4 будуть втрачені, якщо цільовий пристрій буде форматовано vfat, як описано в oshirowanen. tarРішення краще в цьому випадку.
юрій

6

Я думаю, що торінг, а потім розкрутка повинні працювати як на файли, так і на каталоги.

для смоли:

tar cvpfz /target.tar.gz /source/

зняти:

tar xvpfz /source/

pПрапор означає --preserve-permissions.

Ви повинні побачити man tarбільше інформації.


Я просто зробив швидкий тест, щоб бути впевненим і -pне потрібен - tar зберігає дозволи за замовчуванням, принаймні, коли користувачеві належать файли, які архівуються / витягуються.
sierrasdetandil

2
Щоправда, але ви не сказали нам, які файли ви хотіли скопіювати, і я не мав причин припускати щось самостійно.
mikew незалежно від
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.