Ответ 1
Другим популярным вариантом является использование tar c source | (cd target && tar x )
. См. эту статью linuxdevcenter.com.
Я пытаюсь скопировать файловую систему для устройства, для которого я программирую. После того, как вы потратили много времени на то, чтобы выяснить, почему установленная файловая система не работает, я обнаружил, что cp
не выполнил эту работу. Я использовал du -s
для проверки размера исходной файловой системы и той, которую я скопировал с помощью cp -r
, так как получается, что они отличаются примерно на 150 байтов.
Что-то говорит мне, что символические ссылки или какие-то объекты ядра не копируются правильно.
Возможно ли скопировать папку/файловую систему? Если да, то как мне это поделать?
Другим популярным вариантом является использование tar c source | (cd target && tar x )
. См. эту статью linuxdevcenter.com.
Попробуйте сделать это прямолинейно:
cp -a src target
из man cp
-a, --archive
same as -dR --preserve=all
Сохраняет права, символические ссылки...
Здесь я попробовал весь код в моем Linux. Похоже, Rsync, предложенный @seanmcl, как правильный, в то время как другие не сохранили владельцев и/или некоторые специальные файлы или отказали в результате. Точный код:
$ sudo rsync -aczvAXHS --progress /var/www/html /var/www/backup
Просто не забудьте использовать только имя каталога и не ставить косую черту (/
) или подстановочный знак (/*
) в конце имени источника и цели в противном случае скрытые файлы прямо под источником не копируются.
Самый точный способ копирования файлов - cpio
:
cd /path/to/source
find . -xdev -print0 | cpio -oa0V | (cd /path/to/target && cpio -imV)
Не очень проста в использовании, но это очень точно, сохраняя отметки времени, владельцы, разрешения, специальные файлы.
Rsync - лучший способ скопировать файловую систему. Это myriad arguments, которые позволяют точно контролировать, что копируется.