Jak skopiować wolumin Mac za pomocą cp?

13

Badałem to przez wiele godzin. W trybie pojedynczego użytkownika użyłem:

cp -Rpvn /* /Volumes/MyBackup

Moje zewnętrzne USB jest zamontowane /Volumes/MyBackup

Problem polega jednak na tym, że po 24 godzinach nadal nie przestało kopiować 300 GB danych na zewnętrzny dysk USB. Myślę, że to problemy z linków symbolicznych, takich jak /Volumes/MacHDobjętość również posiadające /Volumes/MacHDi /Volumes/MyBackupnie jestem pewien, o tym jednak.

Jak skopiować wolumin Mac za pomocą cp? Czy cp -Rpvn /* /Volumes/MyBackup jest poprawny?

ermSO
źródło
2
Używasz cp w ten sposób, ale nie jest to właściwe narzędzie do zadania. Potrzebujesz do tego rsync.
CousinCocaine
1
Czy masz możliwość uruchamiania komputera Mac w trybie dysku docelowego? A może po prostu wyskoczyć z HD?
CousinCocaine
Nie mogę zrobić trybu docelowego, ponieważ nie mam drugiego komputera Mac. Miałem nadzieję na mniej ryzykowną opcję niż wyjęcie napędu.
ermSO
rsync jest prawdopodobnie najlepszą opcją tutaj, ale myślę, że możesz również użyć dddo wykonania bajtu na bajtową kopię dysku twardego komputera Mac.
thibmaek
1
ddto sposób na tworzenie kopii zapasowych sektor po sektorze, co wydaje się być tym, co tutaj robisz (ale bądź bardzo ostrożny, aby upewnić się, że to, co nadpisujesz, jest tym, co chcesz nadpisać). rsyncjest sposobem na wykonanie skomplikowanych operacji lub kopiowanie dużych plików. cpjest świetny do pojedynczych plików, ale nie nadaje się do operacji na dużą skalę.
cpast

Odpowiedzi:

25

Użyj rsyncdo tego celu, ponieważ cpnie można wiernie odtworzyć wszystkich plików, które istnieją w OS X. Korzyści z rsyncponad dittoi cpsą:

  • przerwane transfery można łatwo zrestartować przy bardzo niskim koszcie.
  • restartuje nawet wznawia częściowo przez duży plik.
  • wykluczanie plików i --dry-run umożliwiają łatwe testowanie i iteracyjne przerzedzanie.

Najprostszym sposobem użycia rsynci zachowania większości rzeczy (uprawnień, dowiązań symbolicznych, edycji dat itp.) Jest użycie flagi -alub --archivedo archiwizacji. Aby zobaczyć swoje postępy, użyj -Plub--progress

Rsync działa jako:

rsync options source destination

W twoim przypadku poleciłbym:

rsync --archive --verbose --one-file-system --human-readable --progress /from/ /to

Lub w skrócie:

rsync -avxhP /from/ /to

Zwróć uwagę na brak końcowego ukośnika w /tolokalizacji.

zobacz komentarze dla bardziej przydatnych flag

Kuzyn Kokaina
źródło
6
Chcesz także flagę -x, aby uniknąć przechodzenia na zamontowane dyski, które nie znajdują się na tym samym woluminie.
Kent,
kudo za bmike za uczynienie tego postu bardziej czytelnym.
CousinCocaine
2
-Pjest faktycznie równoważne obu --progressi --partialpołączone. Zobacz stronę manuala .
kirb
1
Pominąłem --compress(jest to przydatne tylko w przypadku transferów sieciowych) i dodałem -E(zachowaj rozszerzone atrybuty i rozwidlenia zasobów).
Gordon Davisson
5

Jeśli chcesz wykonać wierną kopię zawartości systemu plików, unikaj używania cp. Zamiast tego użyj ditto(1)polecenia, które zachowuje twarde łącza, uprawnienia do plików, rozwidlenia zasobów i metadane HFS. W przeciwieństwie do cp, dittodomyślnie ma na celu zachowanie jak największej ilości tych informacji.

To tylko kwestia biegania .sudo ditto src dest

200_sukces
źródło
Popraw mnie, jeśli się mylę, ale jestem pewien, że cpzostał zaktualizowany do kopiowania metadanych plików w wersji 10.4.
NobodyNada
Tak było, ale dittowciąż jest lepszą opcją.
czerwiec
1
I rsyncjest najlepszą opcją.
CousinCocaine
2

Zapomniałeś utworzyć listę plików wykluczających i prawdopodobnie kopiujesz rzeczy, których nie można / nie należy kopiować, w tym pliki bez dna, takie jak / dev / random.

Chociaż CP może wykonać tę pracę, istnieją lepsze narzędzia. Rsync to jeden, Carbon Copy Cloner lub SuperDuper to inny. Aby użyć analogii kuchennej, używasz noża do otwierania puszki. Rsync to otwieracz do puszek, Carbon Copy Cloner to elektryczny otwieracz do puszek. Używam rsync regularnie, ale ustawienia potrzebne do skopiowania działającego systemu operacyjnego są wystarczająco złożone, że nigdy nie zadałem sobie trudu, aby zrobić to wszystko sam.

 cp -Rpvn /* /Volumes/MyBackup 

Wygląda na to, że wszystko, co chcesz zrobić, to wykonać kopię zapasową. Twój Mac zawiera Time Machine specjalnie do tego celu. Otwórz Preferencje systemowe -> Time Machine, wybierz dysk zewnętrzny, włącz go, a następnie zostaw w spokoju. Działa bardzo dobrze i wymaga mniej niż minuty czasu.

Paweł
źródło
Nie mogę uzyskać dostępu do GUI. Wszystko, co mogę zacząć, to tryb jednego użytkownika, więc CCC, superduper i wehikuł czasu nie są opcjami. Jakich ustawień używałbyś z rsync? Idealnie chciałbym kopię rozruchową. Nie mogłem zmusić ASR do pracy.
ermSO
1
@ermSO Ponieważ oczywiście masz dysk zewnętrzny, zainstaluj nowy system operacyjny na zewnętrznym, a następnie uruchom go z niego. Wszystkie obecne komputery Mac mogą uruchamiać się z FireWire lub USB. Następnie możesz wykonać przyzwoitą kopię zapasową plików użytkownika, a następnie naprawić dysk wewnętrzny. Zwykle w tych przypadkach usuwam całkowicie, eliminując wszelkie pozostałe problemy z katalogiem.
Paul,
ddwykona kopie sektor po sektorze w wierszu poleceń i jest dobrym wyborem do skopiowania całego woluminu na inny cały wolumin, jednocześnie usuwając cały drugi wolumin.
cpast
Czy na pewno chcesz tę -Ropcję? Oznacza to, że jeśli masz dowiązania symboliczne do jednego folderu w kilku miejscach, będziesz kopiować zawartość. To może tłumaczyć czas. Jeśli użyjeszditto zamiast tego, dostaniesz to, co chcesz, z ustawieniami domyślnymi.
czerwiec
1
@juandesant to jego rozkaz, nie mój. w ogóle nie użyłbym cp.
Paweł
0

Możesz utworzyć kopię zapasową Time Machine z poziomu wiersza poleceń za tmutilpomocą narzędzia Time Machine. Możesz ustawić miejsce docelowe, a następnie zamówić ręczną kopię zapasową.

Aby ustawić wolumin kopii zapasowej Time Machine:

sudo tmutil setdestination / Volumes / MyBackup

Następnie rozpocznij tworzenie kopii zapasowej:

tmutil startbackup --auto

--autoFlaga będzie starał się traktować go jak zwykłego zaplanowanym czasie tworzenia kopii zapasowych.

Po utworzeniu kopii zapasowej Time Machine możesz ponownie zainstalować OS X na komputerze Mac, a następnie zaimportować wszystkie pliki z kopii zapasowej Time Machine.

CyberSkull
źródło