Czy istnieje szybszy sposób kopiowania plików wehikułu czasu z jednego dysku na drugi?

15

Próbuję przenieść wszystkie moje kopie zapasowe wehikułu czasu w pliku Backups.backupdb na inny dysk. Zainicjowałem kopiowanie pliku z dnia na dzień (b / c zobaczyłem, że przygotowanie OSX do końca trwało wieczność ... po prostu liczył pliki przez wiele godzin). Rano zobaczyłem, że tylko niektóre kopie zapasowe (foldery z datami) zostały skopiowane. Następnie próbowałem skopiować te, które nie zostały skopiowane ... ale system operacyjny nie pozwala mi na to. Otrzymałem komunikat o błędzie: „Operacji nie można ukończyć, ponieważ nie można modyfikować elementów kopii zapasowej”. Dlatego planuję usunąć niekompletną kopię z nowego dysku, a następnie spróbować ponownie skopiować folder Backups.backupdb.

Bardzo frustrujące. Czy istnieje szybszy sposób na skopiowanie tych plików za pomocą polecenia terminalu, aby nie wykonywał całego przygotowania liczenia plików?

Prawdopodobnie uda mi się spakować cały folder, a następnie zrobić kopię, ale czy to będzie kolidować z jakimikolwiek uprawnieniami do plików itp.? Jedyną rzeczą w tym podejściu jest to, że nie mam już więcej miejsca na woluminie źródłowym na tar.

AKTUALIZACJA

Wypróbowałem niektóre z metod, które ludzie sugerują poniżej, w szczególności używając funkcji przywracania Narzędzia dyskowego i daje mi to pewne komunikaty o błędach i nieoczekiwane wyniki (przynajmniej dla mnie). Próbowałem przywrócić na dwa sposoby:

  • Przy zaznaczonej opcji „Usuń miejsce docelowe”: Za każdym razem (dwukrotnie próbowałem) po zakończeniu przywracania pojawia się komunikat „Nie można przywrócić - nieprawidłowa operacja” i „Nie można przywrócić - nieprawidłowy argument”. Jednak mój dysk docelowy otrzymuje kopię moich plików TM. Dziwne jest to, że mój dysk docelowy jest DOKŁADNIE podobny do dysku źródłowego ... nawet jego rozmiar. Mój docelowy dysk ma w rzeczywistości 1 TB, ale po przywróceniu wyświetla się jako 200 GB, gdy otrzymam informacje z wyszukiwarki. Ale w Disk Utility pokazuje partycję 1 TB!

Następnie spróbowałem zweryfikować / naprawić dysk i otrzymałem:

    Nieprawidłowy rozmiar węzła B-drzewa
    Sprawdzanie objętości Journaled HFS Plus.
    Nieprawidłowy rozmiar węzła B-drzewa
    Zakończono naprawę objętości.
    Aktualizowanie partycji obsługi rozruchu dla woluminu zgodnie z wymaganiami.
    Błąd: Narzędzie dyskowe nie może naprawić tego dysku. Wykonaj kopię zapasową jak największej liczby plików, sformatuj dysk i przywróć pliki z kopii zapasowej.

Nie wiem, czy nawet mam zamiar zweryfikować / naprawić dysk TM ...

  • Z „Erase Destination” UNchecked: Przywracanie nigdy się nie rozpoczyna i otrzymuję:
    Nie można przywrócić - Operacja niedozwolona
milemeow
źródło
2
Myślę, że to dobrze się zgadza - drugie pytanie dotyczy obciążenia IO kopiowania twardych linków, ale jest zamknięte w sieci i obudowie kapsułki czasu, więc jest to szczególny przypadek ogólnego zadawanego tutaj problemu.
bmike
Jeśli możesz zaktualizować system do MacOS 10.13.4+, naprawiono błąd, który uniemożliwiał kopiowanie aliasów / twardych linków w Finderze. Sam próbowałem skopiować kopię zapasową dysku Time Machine na inny i działało to doskonale (i było też dość szybkie). Więcej informacji tutaj: apple.stackexchange.com/a/323691/261070 .
youngrrrr

Odpowiedzi:

13

Normalna kopia (lub kopia za pomocą rsync lub ditto) nie powiela w pełni Wehikułu Czasu, ponieważ konwertuje dwa połączone ze sobą katalogi (jak ma to miejsce w kolejnych kopiach zapasowych TM bez zmiany między) na dwa osobne katalogi.

Najlepszym sposobem jest skopiowanie całego dysku za pomocą Narzędzia dyskowego lub blokowej części Carbon Copy Cloner i prawdopodobnie podobnej na SuperDuper .

użytkownik151019
źródło
1
Ze strony podręcznika ditto: „ditto zachowuje twarde dowiązania do plików (ale nie twarde dowiązania do katalogu) obecne w katalogach źródłowych”, więc tutaj nie ma pomocy. To narzędzie dyskowe lub narzędzie takie jak SuperDuper lub CCC.
nohillside
@patrix Dzięki - strona man nic na ten temat nic nie mówi - CCC używa ditto lub rsync do kopiowania, więc zrobi to tylko, jeśli wykona blokową kopię help.bombich.com/kb/troublesh/…
user151019
Mój dysk źródłowy zawiera tylko kopię zapasową Time Machine. Dysk My Destination zawiera inne pliki. Nie chcę klonowania dysku źródłowego. Chcę tylko skopiować pliki Time Machine na dysk docelowy.
milesmeow
3
Po wielu próbach skopiowania moich plików TM na nowy dysk, Narzędzie dyskowe i Carbon Copy Cloner NIE WYKONALI tego. SuperDuper zrobił to doskonale przy pierwszym uruchomieniu i nie zmniejszył rozmiaru mojej docelowej partycji!
milesmeow
2
Kolejny głos na SuperDuper! tutaj. Wersja 3.2.4 pomyślnie skopiowała duży folder kopii zapasowej Time Machine na nowy dysk w systemie macOS 10.14.2 Mojave, nie zajmując więcej miejsca. (Którego Finder nie mógł zrobić ...) Time Machine z radością kontynuuje używanie nowego dysku, tak jakby był starym.
gidds
5

Migrując pełny zaszyfrowany dysk Time Machine o pojemności 3 TB na nowy dysk o pojemności 8 TB w systemie macOS 10.14, napotkałem wiele problemów. Próba wykonania przywracania w Narzędziu dyskowym została zignorowana i „nie można sprawdzić źródła” lub „Operacja niedozwolona”. Próbując innych sugestii w tym poście i innych, udało mi się uzyskać nowe ekscytujące komunikaty o błędach, takie jak „Plik katalogu na obrazie / woluminie jest zbyt mocno podzielony na fragmenty”, ale nie ma kopii.

Co w końcu działało, na terminalu:

  1. Wymaż nowy dysk za pomocą Narzędzia dyskowego, pasując do formatu napędu źródłowego: MacOS Extended (Journaled, Encrypted)
  2. Użyj diskutil cs listw terminalu, aby uzyskać dokładny rozmiar bajtu woluminu logicznego na starym dysku oraz identyfikator GUID nowego woluminu logicznego, a także numery dysków dla obu, np disk4.
  3. Użyj dokładnego rozmiaru bajtu z kroku 2 jako rozmiaru nowego woluminu. W moim przypadku z dyskiem 3 TB był to 2 999,772,905,472 bajtów:

    sudo diskutil cs resizeVolume $new_lv_guid 2999772905472
    
  4. Korzystając z pvpolecenia homebrew, wykonaj niskopoziomową blokową kopię dysków. Jest to bardzo podobne do używania dd, z tym wyjątkiem, że masz wskaźnik postępu z ETA.

    Musisz uzyskać numery dysków z danych diskutil cs listwyjściowych. Bądź ostrożny. Tutaj bardzo łatwo przypadkowo zastąpić dysk z pełną kopią zapasową nowym, pustym dyskiem.

    sudo sh -c "$(which pv) --buffer-size 50M -s 2999772905472 < /dev/rdisk${source} > /dev/rdisk${target}"
    

    Jeśli otrzymasz błąd odmowy uprawnień / operacja jest niedozwolona, ​​przejdź do Preferencji bezpieczeństwa i prywatności i dodaj dostęp do pełnego dysku dla Terminal.app.

    Dla mnie zajęło to około 10 godzin - pozwoliłem mu działać przez noc - ale pvprzynajmniej otrzymujesz wskaźnik postępu z ETA.

  5. Teraz rozwiń wolumin, aby zajął całe pozostałe miejsce na dysku:

    sudo diskutil cs resizeVolume $new_lv_guid 0
    

    Zajęło mi to około 3 godzin, z około 5 latami kopii zapasowych. Większość tego czasu spędził na macOS fscking.

Teraz możesz cieszyć się nowym, bardziej przestronnym dyskiem Time Machine. Możesz zmienić przeznaczenie starego lub schować go w bezpiecznym miejscu na wypadek, gdyby coś się stało z nowym dyskiem.


Kroki zmiany rozmiaru wydają się być ważne; pomijanie ich spowodowało 10-godzinną kopię pliku, która dała wolumin 8 TB zawierający system plików 3 TB, którego nie mogłem wymyślić, jak zmienić rozmiar.


AKTUALIZACJA Jednym potencjalnym minusem tego podejścia jest to, że ponieważ jest to kopia bit po bicie, identyfikatory są takie same między starym dyskiem a nowym dyskiem. Jeśli podłączę stary pełny dysk, Time Machine uzna, że ​​to nowy dysk, spróbuje wykonać kopię zapasową i zacznie usuwać stare kopie zapasowe, aby zrobić miejsce na nowe. Wydaje się, że jest to dobre podejście do przenoszenia danych na większy dysk, na którym starsze mniejsze dyski zostaną następnie wyczyszczone.

Andrzej
źródło
Cześć Andrzej! Dziękujemy za poświęcenie czasu na napisanie tego przewodnika krok po kroku (i mam nadzieję, że wykorzystam go do przeniesienia mojej kopii zapasowej 1 TB na dysk 4 TB, co do tej pory nie było udane, ponieważ foldery i pliki skopiowane z Findera zajmują o wiele więcej miejsca na nowym dysku niż na oryginalnym). Moje pytanie do ciebie brzmi: czy mogę wykonać te kroki bez cs włączonej aka corestorage? Włączenie przechowywania w rdzeniu wydaje się być potencjalnie niepotrzebną PITA , ale może być konieczne ze względu na krok 3.
Guid
@MichaelDautermann Core Storage jest niezbędny do FileVault, który jest bardzo wysoce zalecany do tworzenia kopii zapasowych, aby chronić twoją prywatność w przypadku utraty, kradzieży lub niewłaściwego usunięcia.
andrew
Chciałbym dodać, że nie byłem w stanie skopiować przy użyciu wspomnianej metody. Powodem było to, że system podpowiedział, że ta „operacja nie jest dozwolona”. Po krótkim wyszukiwaniu dowiedziałem się, że muszę wyłączyć wszystkie funkcje SIP. Można to zrobić, uruchamiając ponownie system macOS, przytrzymując polecenie + R i otwierając terminal. Tutaj musisz wyłączyć, wpisując „csrutil disable”. Przy kolejnym restarcie mogłem skopiować kopię zapasową TM
Oliver Koehler
@i moja wersja to 10.14.6 i całkowicie rozumiem wspomniane ryzyko. Nie byłem jednak w stanie nagrać ani nagrać mojego TimeMachine - kopia zapasowa bez wyłączenia SIP. Jeśli jest inny sposób, chętnie to usłyszę.
Oliver Koehler,
Ciągle pojawia się komunikat „pv: błąd zapisu: błąd wejścia / wyjścia” w 99% (po 30 godzinach, 3 próbach - tak naprawdę 90 godzin). Dyski są odmontowane. Funkcje SIP są wyłączone. Googlowanie błędu nic nie wymyśli. Podobnie jak w oryginalnej sytuacji (3 TB -> 8 TB). sudo sh -c "$(which pv) --buffer-size 50M -s 3000249008128 < /dev/rdisk3 > /dev/rdisk5"- w 8TB wcześniej pomyślnie przeskalowanyResized Core Storage Logical Volume to 3,000,249,008,128 bytes
ks
2

Dlaczego nie skorzystać z terminala:

cp -RnpP Backups.backupdb
  • -R rekurencyjny
  • -n nie nadpisuj (jeśli pozostały resztki kopii pozostały z poprzedniej próby)
  • -p zachowaj listy ACL, uprawnienia, daty utworzenia / modyfikacji itp.
  • -P zachowaj twarde linki, nie podążaj za żadnymi twardymi lub dowiązaniami symbolicznymi.
Chaseholden
źródło
To nie jest prawda. Przeczytaj man cpdla macOS. Zwykłe cppolecenie dostarczane z macOS nie kopiuje twardych dowiązań przy pomocy -P. Strona podręcznika faktycznie mówi „Zauważ, że cp kopiuje pliki na stałe jako osobne pliki. Jeśli chcesz zachować twarde linki, rozważ użycie tar (1), cpio (1) lub pax (1)”.
chmac
0

Ta odpowiedź nie przyspieszy tego, ale znalazłem sposób na prawidłowe skopiowanie danych przy jednoczesnym zachowaniu usuwania duplikatów (twardych linków) i uprawnień. Jako dodatkowy bonus używam tego do skompresowanego pliku końcowego produktu końcowego do archiwizacji.

  1. Za pomocą Narzędzia dyskowego utwórz obraz dysku, który jest większy niż katalog Backups.backupdb. Sugerowałbym również użycie rzadkiego obrazu dysku pakietu dla formatu obrazu i dysku twardego dla partycji. Po zamontowaniu tego obrazu uzyskaj informacje o nim i odznacz opcję Ignoruj ​​własność tego woluminu.

  2. Teraz wyłącz Time Machine i za pomocą wyszukiwarki skopiuj folder Backups.backupdb do zamontowanego obrazu. Wyszukiwarka poprosi Cię o uprawnienia superużytkownika do kopiowania danych. Napij się lub zrób coś jeszcze przez chwilę.

  3. Po zakończeniu kopiowania upewnij się, że wszystko jest w porządku, i odmontuj obraz. W Narzędziu dyskowym wybierz opcję Konwertuj i zamień rzadki obraz pakietu w skompresowany obraz. Ponownie może to chwilę potrwać.

Powinieneś skończyć z dwiema kopiami kopii zapasowej Time Machine, możesz usunąć rzadką wersję pakietu i umieścić dmg w bezpiecznym miejscu jako archiwum na czas.

Jedną z rzeczy, których nie próbowałem z tym, jest przywrócenie systemu z dmg, ale podejrzewam, że powinno działać, moim celem było zarchiwizowanie przyrostowych zmian wehikułu czasu i utrzymanie twardej struktury łącza.

Próbowałem także rsync i cp, ale nie wydawały się one utrzymywać twardej struktury dowiązania, która ostatecznie byłaby x razy większa od wielkości, x to liczba dat, które miałeś w przeszłości. Ta metoda działała dobrze, ale znowu może nie uzyskać prędkości rozwiązania blokowego.

hanz
źródło
0

Apple ma oficjalny samouczek: „ Time Machine: jak przesyłać kopie zapasowe z bieżącego dysku do nowego dysku ”.

Najważniejsze kroki z tej strony:

  1. Sprawdź format nowego dysku kopii zapasowej
  2. Ustaw uprawnienia na nowym dysku kopii zapasowej
  3. Tymczasowo wyłącz Time Machine
  4. Skopiuj dane kopii zapasowej z oryginalnego dysku na nowy dysk
  5. Ustaw Time Machine na korzystanie z nowego dysku

Oto jak strona zaleca wykonanie kroku kopiowania:

Skopiuj dane kopii zapasowej z oryginalnego dysku na nowy dysk

  1. Otwórz nowe okno Findera. Na pasku bocznym Findera kliknij ikonę oryginalnego dysku kopii zapasowej.
  2. Otwórz nowe okno Findera. Na pasku bocznym Findera kliknij ikonę nowego dysku kopii zapasowej.
  3. Przeciągnij folder „Backups.backupdb” z oryginalnego dysku kopii zapasowej na najwyższy poziom nowego dysku kopii zapasowej.
  4. Wprowadź nazwę administratora i hasło, a następnie kliknij OK, aby rozpocząć proces kopiowania.

Skopiowanie danych kopii zapasowej może zająć trochę czasu, w zależności od rozmiaru kopii zapasowej.

David Andreoletti
źródło
5
Z jednej strony patrzę na to pytanie, ponieważ po tym samouczku (który sugeruje skopiowanie folderu kopii zapasowej za pomocą Findera) i pozostawieniu go uruchomionego na noc, zakończyło się to pewnym problemem z uprawnieniami z kopiowaniem około 500/940 gb. Potem zrobiłem sudo rsynczeszłej nocy, ale dziś znajdź, ERROR: out of memory in flist_expand [sender]a moja kopia ma teraz ~ 600 GB. Nie zdecydowałem, co dalej, ale podejrzewam, że większość osób czytających zna już oficjalny samouczek.
PeterT
@PeterT Właśnie próbowałem tuto i dostałem ten sam problem co ty. Nie jestem pewien, czy ktokolwiek wiedział o samouczku, w przeciwnym razie ktoś wspomniałby o nim tutaj i wynikach następujących po nim. Teraz ludzie wiedzą, że nie warto próbować.
David Andreoletti
1
Kopiowanie folderu za pomocą wyszukiwarki zajmuje wiek, aby zbudować listę plików, a następnie kończy się niepowodzeniem z powodu niewystarczającej ilości miejsca na dysku, więc musi być źle obliczony.
malhal
1
To jest dokładnie mój problem. Pierwotny wolumen TM wynosi 550 GB, nowy 600 GB. Mojave wciąż narzekała na niewystarczającą ilość miejsca na tomie. Używam teraz SuperDuper! w trybie „Kopia zapasowa - wszystkie pliki”.
Markus Rudel
1
Samouczek Apple'a dla mnie nie powiódł się w macOS Mojave 10.14.2. Próbowałem skopiować archiwum kopii zapasowej o pojemności 3 TB na dysk o pojemności 8 TB; Finder spędził prawie 5 dni na kopiowaniu (przez większość czasu powiedział „pozostało 5 sekund”), po czym poddał się i narzekał, że dysk jest pełny! I tak było - mimo że skopiowano tylko około 2/3 kopii zapasowych. Oczywiście nie zachowuje twardych linków, ale tworzy nowe kopie każdego z nich. Więc ta odpowiedź nie jest obecnie poprawna.
gidds
0

+1 za narzędzia dyskowe, za długo na komentarze:

Przetestowano 12.250.329 plików, skopiowano 10.408.594 plików. Efektywna prędkość kopiowania 8,68 MB / s.

do klonowania magnetycznego napędu Backup 2 TB z kilkuletnimi kopiami zapasowymi za pośrednictwem SuperDuper! W tym roku.

Zajęło to w sumie 63 godziny (SuperDuper resetuje swój zegar co 24 godziny, więc pokazywał w końcu 15:04:43), w przeciwieństwie do kopii Findera, którą anulowałem po około 4 dniach i jednej czwartej plików.

Oczywiście dysk magnetyczny nie był przyczyną tak długiego czasu. Powodem, dla którego kopie Findera zatrzymują się na długo działających dyskach kopii zapasowej, jest sama liczba kaskadowych dowiązań symbolicznych w niezmienionych plikach, szczególnie w przypadku wielu małych plików, takich jak indeksy Git.

Paracetamol
źródło
0

rsync jest doskonałym narzędziem do takich rzeczy. Ogólnie używam tego do takich rzeczy. W takim przypadku mogę użyć flag -aP. Myślę, że częścią -a („archiwum”) jest również zachowanie uprawnień, list ACL i tym podobnych, ale nie jestem pewien.

IIRC dostępna jest również opcja --delete, która pozwala usunąć plik źródłowy po pomyślnym skopiowaniu do miejsca docelowego. Byłbym ostrożny przy użyciu tego - zwykle robię pełne dublowanie bez opcji --delete, następnie ponownie uruchomię polecenie z opcjami -c i --delete. -c jest sumą kontrolną, więc sprawdza wszystkie pobrane pliki względem wszystkich plików źródłowych za pomocą sumy kontrolnej, a następnie usuwa źródło, jeśli istnieje dopasowanie, w przeciwnym razie ponownie kopiuje lub wznawia kopiowanie w zależności od przypadku.

EDYCJA: w tym przypadku należy użyć flagi -H zgodnie z komentarzami, aby zachować twarde linki.

Harv
źródło
5
rsync nie utrzymuje twardych linków w katalogach. Kopiowanie kopii zapasowej while TM spowoduje zduplikowanie wielu katalogów
nohillside
1
@patrix - Mogę to potwierdzić. Próbowałem Twarde linki do katalogów są prawie unikalne dla HFS +, a rsync ich nie rozumie.
Fałszywe imię
3
-H, - twarde linki zachowują twarde linki
Pete Ashdown
-2

W przypadku dysków twardych, gdy przenosisz wiele plików z jednego dysku, czytnik porusza się tam iz powrotem, powodując przerażający dźwięk kliknięcia, i znacznie zmniejsza szybkość przesyłania, na przykład - jeden plik z USB 2.0 przesuwa się na moim komputerze z prędkością 30 Mb / s z 2 zewnętrzne dyski twarde, ale 2 pliki są przenoszone z prędkością 11 Mb / s. a 3 pliki przenoszą się z prędkością 6 Mb / s. itp. itp. pliki zip będą się poruszać szybciej niż pliki.

Jake Thomas
źródło
2
Jak to odpowiada na pytanie PO?
fsb