Подтвердить что ты не робот

Как копировать папку точно

Я пытаюсь скопировать файловую систему для устройства, для которого я программирую. После того, как вы потратили много времени на то, чтобы выяснить, почему установленная файловая система не работает, я обнаружил, что cp не выполнил эту работу. Я использовал du -s для проверки размера исходной файловой системы и той, которую я скопировал с помощью cp -r, так как получается, что они отличаются примерно на 150 байтов.

Что-то говорит мне, что символические ссылки или какие-то объекты ядра не копируются правильно.

Возможно ли скопировать папку/файловую систему? Если да, то как мне это поделать?

4b9b3361

Ответ 1

Другим популярным вариантом является использование tar c source | (cd target && tar x ). См. эту статью linuxdevcenter.com.

Ответ 2

Попробуйте сделать это прямолинейно:

cp -a src target

из man cp

    -a, --archive
           same as -dR --preserve=all

Сохраняет права, символические ссылки...

Ответ 3

Здесь я попробовал весь код в моем Linux. Похоже, Rsync, предложенный @seanmcl, как правильный, в то время как другие не сохранили владельцев и/или некоторые специальные файлы или отказали в результате. Точный код:

$ sudo rsync -aczvAXHS --progress /var/www/html /var/www/backup

Просто не забудьте использовать только имя каталога и не ставить косую черту (/) или подстановочный знак (/*) в конце имени источника и цели в противном случае скрытые файлы прямо под источником не копируются.

Ответ 4

Самый точный способ копирования файлов - cpio:

cd /path/to/source
find . -xdev -print0 | cpio -oa0V | (cd /path/to/target && cpio -imV)

Не очень проста в использовании, но это очень точно, сохраняя отметки времени, владельцы, разрешения, специальные файлы.

Ответ 5

Rsync - лучший способ скопировать файловую систему. Это myriad arguments, которые позволяют точно контролировать, что копируется.