Przenieś plik tar 30 GB z jednego zdalnego serwera na inny - ograniczony przez miejsce na dysku


8

Mam plik tar „Moodle” o pojemności 38 GB, który muszę przenieść ze starego serwera (hosting dzielony), który możemy nazwać „serwerem A” na nowym serwerze (dedykowanym wirtualnym) lub „serwerze B”. Jestem z Mediatemple, jeśli to pomaga.

Już sflagowałem katalog i użyłem wget do przesłania go na serwer B za pośrednictwem SSH, jednak - jest to niewielki pakiet 100 GB i mam 96% pojemności dysku - co oznacza, że ​​nie mogę rozpakować pliku na serwerze B! Czy jest jakiś sposób, aby przenieść ten ogromny plik z serwera A na serwer B, zachowując uprawnienia i przy najmniejszym możliwym uszkodzeniu pliku, co nie spowoduje, że przekroczę limit dysku?

Chociaż do tej pory spędziłem sporo czasu, byłbym skłonny porzucić mój pierwotny plan, gdyby ktoś mógł zaoferować lepszy pomysł - i byłbym bardzo wdzięczny!

Odpowiedzi:


21

Nie smołuj. Służy rsync -avdo zachowania uprawnień podczas przesyłania plików. Chociaż podobnie jak tar, nie zachowuje kontekstu selinux. Nie dlatego, że uważam to za ważne.


1
Cześć Dennis, dzięki za odpowiedź. Nie sądzę, żebyś mógł trochę rozwinąć sposób korzystania z polecenia rsync? Lub dostarczyć przydatny artykuł?
Jeszcze

1
Przydatnym artykułem byłaby strona rsync :) Ale w skrócie: jeśli masz dostęp ssh z serverb do servera, uruchom to na serverb:rsync -av servera:/path/to/files/to/copy/ /path/to/copy/to
Dennis Kaarsemaker

1
Jeśli nie masz pewności, jak używać podstawowych poleceń w używanym systemie operacyjnym, zacznij od narzędzia pomocy. Na maszynach uniksowych jest to często coś w stylu man rsynclubrsync --help
mfinni,

1
-aoznacza -r(i wiele innych flag, o których ludzie ciągle zapominali, dopóki -anie dodano: „są to użyteczne flagi do tworzenia kopii zapasowych”)
Dennis Kaarsemaker

1
Jeśli bezpieczeństwo nie stanowi problemu (mam na myśli, że ufasz sieci między dwoma komputerami), nc jest również opcją. Na serwerze: tar -zc source | nc -l 1313 Na kliencie: nc SERVER_IP 1313 | tar -zx
Tsvetomir Dimitrov

12

Prawdopodobnie chcesz kupić więcej miejsca na dysku, ale zakładając, że nie, możesz ...

potokuj tarball, zamiast go pobierać.

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

lub jeśli nie masz dostępu SSH do starego serwera

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

lub użyj rsync, jak powiedział Dennis .

Bądź kreatywny. Są inne rozwiązania, o których nie wspominam.


Być może będziesz musiał użyć --numeric-owneropcji przed zrobieniem archiwum, aby upewnić się, że właściciel i grupy się nie zmienią. ssh ouser@oserver tar -zcplC /src_path --numeric-owner . | tar -zxpC /dst_path
F. Hauri

@ F.Hauri --numeric-ownermoże mieć (potencjalnie poważne) niezamierzone konsekwencje, jeśli schemat UID / GID różni się między dwiema maszynami. Zwykle nie jest to problem w środowisku wewnętrznym, ale przejście z „hostingu współdzielonego” na „dedykowanego wirtualnego” może powodować problemy. Należy spodziewać się, że do posiadania fix na nowym serwerze, jeśli korzystają tar, cpioi ewentualnie nawet rsync.
voretaq7

Tak, masz rację, ale niewiedza o tego rodzaju opcji może mieć (taki sam) efekt granicy. Najlepszy ze wszystkich: wiedz, co robisz i ... rtfm ;-)
F. Hauri

... jakiś interesujący sposób (filtry) do korzystania (lub nie), aby być kreatywnym : nclub openssl, sed, gpg, uuencodei mail(ostrożnie), enscript+ lpr+ [ptasie nośniki] ( fr.wikipedia.org/wiki/IP_over_Avian_Carriers ) + scan+ ocr. .. Ale jest jeszcze więcej ...
F. Hauri
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.