Переносите файл tar размером 30 ГБ с одного удаленного сервера на другой, ограниченный местом на диске

8

У меня есть tar-файл Moodle размером 38 ГБ, который мне нужно перенести со старого сервера (общий хостинг), который мы можем назвать «Сервер A» на новый сервер (выделенный виртуальный) или «Сервер B». Я с Mediatemple, если это поможет.

Я уже пометил каталог и использовал wget для его передачи на сервер B через SSH, однако - это небольшой пакет на 100 ГБ, и у меня 96% емкости диска - то есть я не могу распаковать файл на сервере B! Можно ли как-нибудь перенести этот огромный файл с Сервера A на Сервер B, сохранив разрешения и с наименьшей вероятностью испортить файл, что не заставит меня достигнуть предела диска?

Хотя я потратил немало времени, занимаясь этим, я был бы готов отказаться от своего первоначального плана, если кто-то может предложить лучшую идею - и я был бы очень благодарен!

alexbass
источник

Ответы:

21

Не смей. Используется rsync -avдля сохранения разрешений при передаче файлов. Хотя, как и tar, это не сохраняет контекст selinux. Хотя я не считаю это важным.

Деннис Каарсемакер
источник
1
Привет Деннис, спасибо за ответ. Я не думаю, что вы могли бы немного рассказать о том, как использовать команду rsync? Или предоставить полезную статью?
Еще
1
Полезной статьёй была бы man-страница rsync :) Но в двух словах: если у вас есть ssh-доступ с serverb к servera, запустите это на serverb:rsync -av servera:/path/to/files/to/copy/ /path/to/copy/to
Деннис Каарсемакер
1
Если вы не уверены, как использовать основные команды в используемой ОС, начните с помощи. На машинах Unix это часто что-то вроде man rsyncилиrsync --help
mfinni
1
-aподразумевает -r(и многие другие флаги, о которых люди забыли, пока их -aне добавили как «это полезные флаги для создания резервных копий»)
Деннис Каарсемакер
1
Если безопасность не является проблемой (я имею в виду, что вы доверяете сети между двумя компьютерами), nc также является опцией. На сервере: tar -zc source | nc -l 1313 На клиенте: nc SERVER_IP 1313 | tar -zx
Цветомир Димитров
12

Вы, вероятно, хотите купить больше места на диске, но, если вы этого не сделаете, вы могли бы ...

отправляйте тарбол вокруг, а не загружайте его.

newserver#  ssh olduser@oldserver "cat /path/to/tarball" | tar xf -

или если у вас нет доступа SSH к вашему старому серверу

newserver# wget -O - http://oldserver/path/to/tarball | tar xf -

или используйте rsync, как сказал Деннис .

Будь креативным. Есть и другие решения, которые я не упоминаю.

voretaq7
источник
Возможно, вам придется использовать --numeric-ownerпараметр перед созданием tarball, чтобы убедиться, что владелец и группы не изменятся. ssh ouser@oserver tar -zcplC /src_path --numeric-owner . | tar -zxpC /dst_path
Ф. Хаури
@ F.Hauri --numeric-ownerможет иметь (потенциально серьезные) непреднамеренные последствия, если схема UID / GID отличается между двумя машинами. Обычно это не проблема внутренней среды, но переход от «общего хостинга» к «выделенному виртуальному» может вызвать проблемы. Вы должны ожидать , чтобы иметь в собственности исправить на новом сервере , если используется tar, cpioи , возможно , даже rsync.
voretaq7
Да, вы правы, но, не зная об этом типе опции, может иметь (тот же) эффект границы. Лучше всего: знай, что ты делаешь и ... rtfm ;-)
Ф. Хаури
... некоторые интересный способ (фильтры) использовать (или нет) , чтобы быть творческим : ncили openssl, sed, gpg, uuencodeи mail(с осторожностью;) enscript+ lpr+ [птичьи носители] ( fr.wikipedia.org/wiki/IP_over_Avian_Carriers ) + scan+ ocr. .. Но есть еще больше ...
Ф. Хаури