Поэтому я собирался сделать резервную копию своей домашней папки, скопировав ее на внешний диск следующим образом:
sudo cp -r /home/my_home /media/backup/my_home
В результате все папки на внешних дисках теперь принадлежат root:root
. Как я могу cp
сохранить права собственности и разрешения от оригинала?
permissions
cp
Psachnodaimonia
источник
источник
man
для меня это загадочно. В этом случае,man
в-r
говоритsame as --preserve=mode,ownership,timestamps
. Откуда мне было знать, что значит сохранить первоначальные разрешения !?-p
Ответы:
С man-страницы cp:
источник
cp -a
. Это также включает-r
флаг ecursive, но он делает не только это - он сохраняет все в файле; Атрибуты SELinux, ссылки, xattr, все. Это «режим архива». Существуют лучшие инструменты для создания резервной копии, но если вы используетеcp
для резервного копирования, не используйте ничего, кромеcp -a
.cp -a
не работает на некоторых системах: например, OS X, где (по крайней мере, в некоторых версиях) необходимо использоватьcp -pR
. На моей нынешней системе OS X (10.10.15),cp -a
похоже, это честь.diff <(getfacl -R folder1) <(getfacl -R folder2)
я использую i sill, чтобы получить разные списки контроля доступа :(Вы также можете использовать
rsync
.Из
rsync
справочной страницы:Смотрите этот вопрос для сравнения между
cp
иrsync
: https://stackoverflow.com/q/6339287/406686Обратите внимание на завершающие косые черты (см. Man-страницу для деталей).
источник
cp -p
это хорошо, но мне нравитсяrsync
«s выхода намного больше в общем , что я совмещенныйpcp
сtime rsync --progress -ah
. В моем понимании это означает «прогресс копирование». И те, и другие принимают-r
, поэтому он хорошо работает для общего использования терминала - но, к сожалению, не в сочетании с тем,sudo
как показано в этом вопросе / ответе.rsync -a
не сохраняет расширенные атрибуты (-X
) и ACL (-A
), - говорится в кратком описанииarchive mode; equals -rlptgoD (no -H,-A,-X)
. Например, контексты SELinux не будут сохранены без-X
. Для многих случаев использования это хорошо, но если вы делаете резервную копию системного раздела, отсутствие -X может очень сильно сломаться. Насколько я знаю,cp -a
действительно сохраняет все атрибуты файла.sudo cp -a
права собственности и группы,sudo rsync -a
превращая их в root. Итак, @Perseids - это правильно./home
папку,rsync -aX /home /mnt/sdd/
и это сработало как шарм.Где
-a
это сокращение--archive
- в основном он копирует каталог точно так, как он есть; файлы сохраняют все свои атрибуты, а символические ссылки не разыменовываются (-d
).От
man cp
:источник
Я использую метод,
cp -pdRx
который-p
сохранит режим, владельца и временные метки,-d
сохранит ссылки (так что вы получите символические ссылки вместо скопированного содержимого файла),-R
сделайте это рекурсивно и-x
останетесь в одной файловой системе (действительно полезно, если вы копируете/
или что-то с активной точкой монтирования ).PS:
-R
а-r
не просто привычка от использованияls -lR
.источник
cp -ax
немного более короткая версия того же самого. Это сработало отлично - спасибо!-r
и-R
. Проверьте страницу справочника (даже конкретную часть, слишком длинную, чтобы цитироваться здесь).-R, -r, --recursive copy directories recursively
.cp
имеет возможность сохранить право собственности на файл. Из справочной страницыcp
:источник
Вы можете сделать что-то вроде этого:
tar
Сохраняет права доступа, владельца и структуру каталогов, но преобразует все в поток байтов. Вы запускаете «подоболочку» (команды в скобках), которые изменяют каталог, а затем получаетеtar
возможность отменить преобразование. Пара байтов становится каталогами и файлами с правильными владельцами и разрешениями.источник
Ответ прост:
cp
есть-p
опция, которая сохраняет права доступа (вот рыба).Но, как говорит Войтек в своем комментарии,
man cp
(чтение прекрасного руководства) будет хорошей отправной точкой (хотите научиться ловить рыбу?).источник
Вы можете использовать preserve = all, тогда ваша копия сохранит все атрибуты, такие как владелец, группа и отметка времени ваших файлов. Итак, сделайте резервную копию безопасно с помощью следующей команды.
источник