У меня есть две системы, которые я разделяю между ними, и я пытаюсь найти наиболее эффективный способ перемещения данных между ними. Я выяснил, как tar и gzip в архив на первом сервере («serverA»), а затем используйте rsync для копирования на удаленный хост («serverB»). Однако, когда я распаковываю/распаковываю данные там, он сохраняет архив, включая полное имя пути от исходного сервера. Так что если на сервере А мои данные в:tarring и untarring между двумя удаленными хостами
/serverA/directory/a/lot/of/subdirs/myData/*
и, используя эту команду:
tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz /serverA/directory/a/lot/of/subdirs/myData/
Все в .../MyData успешно просмоленной и заархивированы в MyData-archive.tar.gz
Однако после копирования архива, когда я пытаюсь распаковать/разархивировать на втором хосте (я вручную войти сюда, чтобы закончить обработку, первым шагом которого является распаковка/распаковать) с помощью следующей команды:
tar -zxvf /serverB/current/directory/myData-archive.tar.gz
Это untars все в моем текущем каталоге (ServerB/ток/директории /), однако это выглядит следующим образом:
/serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/Data*ext
Как следует сформулировать как деготь команды, так что мои данные оседают в каталоге под названием
/serverB/current/directory/dataHERE/
?
Я знаю, что мне нужен флаг -C для разворачивания в другой каталог (в моем случае,/serverB/current/directory/dataHERE), но я до сих пор не могу понять, как сделать это так, чтобы весь путь не включается, когда архив распадается. Я видел похожие записи, но ни один из них, которые я видел, не обсуждал, как это сделать при переходе между разными хостами.
UPDATE: за один из ответов на this question, я изменил мои команды:
смолы/молнии на SERVERA:
tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz serverA/directory/a/lot/of/subdirs/myData/ -C /serverA/directory/a/lot/of/subdirs/ myData
и, распакуйте/распаковать:
tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE
И теперь, она не только разархивировать/разархивировать данные для:
/serverB/current/directory/dataHERE/
, как я хотел, но это также ставит еще одну копию данных здесь:
/serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/
, которые я надеваю» я хочу. Как мне нужно исправить мои команды, чтобы они только помещали данные в первую очередь?
Разве это не так, как http://stackoverflow.com/questions/18681595/tar-a-directory-but-dont-store-full-absolute-paths-in-the-archive?rq=1? – melpomene
@melpomene Я сначала посмотрел туда и пробовал некоторые из решений, и это было похоже на работу, кроме, в дополнение к распаковке/распаковке данных в/serverB/current/directory/dataHERE /, она также скопировала данные в:/serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/Data * ext и я не уверен, почему – user20408
@melpomene, но он будет работать пока, мне просто нужно будет удалить дубликаты данных. было бы хорошо, если бы я не (казалось бы) делал это дважды, но хорошо – user20408