У нас есть файловая система: /foo
И у нас есть еще одна файловая система: /bar
В:Как скопировать все файлы из /foo в /bar?
У нас нет места для сжатия, только для копирования. Но в файловой системе могут быть символические ссылки, жесткие ссылки. Поэтому нужно сохранить их и владельца, разрешение, структуру, скрытые файлы! Какой лучший способ?
дополнительно: файлы со странными символами или файлы блоков/символов тоже
ОБНОВЛЯТЬ: можно ли использовать gzip с этим? Если нужно копировать по сети, сжатие было бы очень-очень полезным.
решение1
Комментарий Руипочти достаточно; это должно скопировать все, включая скрытые файлы:
cd /foo; tar cpf - . | (cd /bar; tar xpvf -)
(беги как root
).
Если вы хотите сжать данные, копируемые между двумя tar
процессами, вы можете добавить компрессор и декомпрессор в конвейер:
cd /foo; tar cpf - . | gzip -9 | (cd /bar; gunzip | tar xpvf -)
Если ваша версия tar
поддерживает это, вы можете использовать z
вместо этого флаг:
cd /foo; tar cpzf - . | (cd /bar; tar xpzvf -)
(На некоторых платформах этот -p
флаг включен по умолчанию root
, насчет AIX я не уверен.)
решение2
Tar - хотя и очень универсален - не знает о многих основных проблемах, связанных с данными inode. Я настоятельно рекомендую вариацию
cd $src; find . | backup -if - | (cd $target; restore -xqf -)
Много лет назад я превратил это в «красивый скрипт», но в основном я просто использую его в командной строке.
Для красивого сценария (из 2009 года! ух ты!) см.:http://www.rootvg.net/content/view/301/309/