2017-01-22 4 views
0

У меня есть две системы, которые я разделяю между ними, и я пытаюсь найти наиболее эффективный способ перемещения данных между ними. Я выяснил, как 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, я изменил мои команды:

  1. смолы/молнии на 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 
    
  2. и, распакуйте/распаковать:

    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/ 

, которые я надеваю» я хочу. Как мне нужно исправить мои команды, чтобы они только помещали данные в первую очередь?

+0

Разве это не так, как http://stackoverflow.com/questions/18681595/tar-a-directory-but-dont-store-full-absolute-paths-in-the-archive?rq=1? – melpomene

+0

@melpomene Я сначала посмотрел туда и пробовал некоторые из решений, и это было похоже на работу, кроме, в дополнение к распаковке/распаковке данных в/serverB/current/directory/dataHERE /, она также скопировала данные в:/serverB/current/directory/serverA/directory/a/lot/of/subdirs/myData/Data * ext и я не уверен, почему – user20408

+0

@melpomene, но он будет работать пока, мне просто нужно будет удалить дубликаты данных. было бы хорошо, если бы я не (казалось бы) делал это дважды, но хорошо – user20408

ответ

0

После некоторых более бездельничал, я понял, как добиться того, что я хотел:

Для дегтя на SERVERA:

tar -zcvf /serverA/directory/a/lot/of/subdirs/myData-archive.tar.gz -C /serverA/directory/a/lot/of/subdirs/ myData 

Тогда распаковка на серверB:

tar -zxvf /serverB/current/directory/myData-archive.tar.gz -C /serverB/current/directory/dataHERE 
0

На serverA сделать

(cd /serverA/directory/a/lot/of/subdirs; tar -zcvf myData-archive.tar.gz myData;) 
Смежные вопросы