Каков хороший общий способ сделать рекурсивную / глубокую копию каталога в Linux, который работает в большинстве случаев? Я использовал простые вещи вроде cp -R
а также довольно сложные cpio
заклинания. Есть ли какие-то сильные или слабые стороны, из-за которых вы предпочитаете одно другому? Какой из них вы используете чаще всего?
NAME
cp - copy files and directories
-a, --archive
same as -dpR
-d same as --no-dereference --preserve=links
-p same as --preserve=mode,ownership,timestamps
-R, -r, --recursive
copy directories recursively
Итак, отвечая на ваш вопрос:
cp -a /foo /bar
Скопируйте все рекурсивно из каталога / foo в каталог / bar, сохраняя символические ссылки и файл / каталог 'mode' 'право собственности' и 'timestamps'.
Взгляните на rsync ... Мне это нравится, потому что вы копируете меньше данных при обновлении двух каталогов ... он также может работать удаленно. В простейшей форме rsync -a / src / dest
Я использую такую команду, как "cd $ srcdir; tar -c. | tar -C $ destdir -x" чаще всего. Но я также использую rsync -a $ src $ dst.
Самая большая сила решения tar в том, что это то, что мне приходилось использовать много лет назад в системе, в которой не было cpio, rsync или cp, которые могли бы рекурсивно копировать. Деготь есть практически везде. Он застрял у меня на голове, потому что я его много использовал, наверное, есть более элегантные способы. Кажется, что он всегда выполняет свою работу правильно, поэтому я никогда особо не искал замены.
rsync
отличный инструмент. Это швейцарский армейский нож для передачи данных. Это такой простой и мощный инструмент. Как только вы начнете его использовать, вы попадете на крючок.