Jak skopiować plik większy niż 4 GB na dysk flash USB?

53

Próbuję skopiować plik o pojemności 6 GB na dysk flash USB, ale nie można go skopiować.

VJ Ranga
źródło
23
Czy dysk USB jest sformatowany za pomocą FAT32? Ten system plików nie obsługuje plików większych niż 4 GB. Musisz go sformatować inaczej, np. Jako NTFS. Uwaga: formatowanie usuwa wszystkie dane z dysku.
Bajt Commander
14
Czy możesz podać więcej szczegółów w pytaniu na temat „nie da się skopiować”? Jakie polecenia próbowałeś? Jaki komunikat o błędzie pojawia się? (Są to bardzo pomocne w przypadku, gdy ktoś będzie miał ten sam problem w przyszłości i szuka odpowiedzi ...)
psmears,
2
google dla „nie można skopiować plików większych niż 4 GB”, a na
stackexchange
5
Pomocne może być również uwzględnienie rozmiaru USB
George Tian
3
@Nukeface Czy możesz podać odpowiedź z instrukcjami, jak to zrobić? Pozostawienie pół odpowiedzi jako komentarza często powoduje więcej szkody niż pożytku. Dzięki.
Eliah Kagan,

Odpowiedzi:

108

Wynika to z ograniczenia FAT32. Pliki większe niż 4 GB nie mogą być przechowywane na woluminie FAT32. Sformatowanie dysku flash jako exFAT lub NTFS rozwiąże ten problem.

OSTRZEŻENIE: Utwórz kopię zapasową danych. Formatowanie spowoduje usunięcie wszystkich danych z urządzenia.

Russo
źródło
20
BTW, formatowanie dysku flash jak ext3również jest opcją
Basile Starynkevitch
18
@BasileStarynkevitch tak, ale nie jest bardzo użyteczny w niektórych zastrzeżonych systemach operacyjnych;)
Ruslan
11
@ Ruslan: Popieram to. Używanie ext3 / 4 w systemie Windows było bardziej bolesne niż używanie exFat i NTFS w systemie Linux.
JIV
13
Chociaż jest to dzieło Microsoftu, wiele można powiedzieć o exFAT. Jak zauważyli inni, jest obsługiwany przez wszystkie trzy systemy operacyjne dla komputerów stacjonarnych, dlatego będziesz dążył do maksymalizacji interoperacyjności. Ponadto został zaprojektowany do użytku na dużych dyskach flash. Cytowanie: en.wikipedia.org/wiki/ExFAT W szczególności, ponieważ może oznaczyć plik jako ciągły, a tym samym uniknąć konieczności dotykania FAT, działa on wyjątkowo wydajnie w przypadku użycia OP: obsługa bardzo dużego pliku.
dgnuff
8
@dgnuff masz na myśli, wszystkie trzy główne systemy operacyjne dla komputerów stacjonarnych :)
dn3s
91

Jeśli nie chcesz ponownie formatować dysku USB lub potrzebujesz FAT32, możesz po prostu podzielić duży plik na części. Większość menedżerów archiwów jest dostarczana z opcją podziału, aw wierszu polecenia jest splitnp. Dla twojej sprawy:

split -b4294967295 /path/to/input.file /path/to/pen/drive/output.file.

Zobacz man splitpełną dokumentację. Spowoduje to utworzenie następujących plików:

4,0G output.file.aa
1,6G output.file.ab

Rozmiar pliku output.file.aaodpowiada dokładnie maksymalnemu rozmiarowi dysku USB sformatowanego w systemie FAT32, czyli 4 Gibibyte (GiB, to nie to samo co Gigabyte GB) minus 1 bajt .
Dzięki Gilles za ten ważny dodatek.


Aby ponownie uzyskać dostęp do pliku, musisz najpierw scalić jego części. W systemach Linux możesz to zrobić za pomocą:

cat output.file.* > input.file

Jeśli obawiasz się, że może to niepoprawnie posortować pliki w Bash, czy rozszerzenia wieloznaczne są gwarantowane w porządku?
Odpowiednie polecenie w systemach Windows to:

copy /b output.file.aa+output.file.ab input.file

Wraz z wieloma innymi przydatnymi narzędziami GNU splitmożna również zainstalować w systemie Windows, zobacz Narzędzia GNU dla Win32 .

deser
źródło
2
Założę się, że połowa pozytywnych opinii, które tu dostaję, to tylko z powodu GiB vs. GB. ;)
deser
2
Poparłbym splitnawet bez rozróżnienia między GiB i GB. Ale wyślę za to attaboy ...
Zeiss Ikon,
1
@dessert Oczekuję, że dzięki temu uzyskasz tylko około 7,4% więcej głosów pozytywnych.
Eliah Kagan,
1
Głosowałem za tym, ponieważ sformatowanie dysku tylko w celu przeniesienia jednego dużego pliku jest okropną odpowiedzią, jeśli splitistnieje właśnie w tym celu i nie jest wymagane po stronie odbierającej. FAT32 jest nie bez powodu lingua franca napędów USB.
Monty Harder
Myślę, że -b 4095Mbyłoby to o wiele prostsze i osiągnąć to samo, co bcpolecenie. W Bash można również użyć powłoki arytmetyki: $(((4<<30)-1)).
David Foerster,
39

Problem: FAT32 ma limit 4GiB dla rozmiaru pliku

Badane są różne scenariusze i systemy plików w poszukiwaniu alternatyw z uwzględnieniem

  • problem z rozmiarem pliku
  • które systemy operacyjne powinny odczytywać / zapisywać napęd USB

Tylko Linux

Jeśli zamierzasz używać napędu tylko z Ubuntu (i innymi dystrybucjami Linuksa), dobrym pomysłem jest użycie systemu plików Linux , na przykład ext4 . W ten sposób możesz uzyskać wyższą prędkość odczytu / zapisu (w zależności od tego, który proces jest wąskim gardłem) i uzyskać większą elastyczność w zakresie własności i uprawnień.

  • Możesz użyć programu GUI gparteddo stworzenia systemu plików ext4 .

Pełna kompatybilność z Linux, Windows i MacOS

Windows ma problemy z systemami plików Linux i myślę, że MacOS ma problemy zarówno z systemami plików Linux, jak i NTFS . Jeśli więc chcesz mieć „pełną kompatybilność” do odczytu i zapisu, pozostaną tylko FAT32 , UDF i exFAT .

  • FAT32 ma limit rozmiaru 4 GiB (gibibajt, podstawa 2).

    • Można utworzyć we wszystkich trzech systemach operacyjnych.
    • Utrzymuj (napraw) w systemie Windows, jeśli masz dostęp do systemu Windows.
    • Może być obsługiwany w Ubuntu za dosfsckpomocą pakietu dosfstools,

      sudo apt-get install dosfstools
      
      sudo dosfsck -a /dev/sdxn  # least destructive option
      sudo dosfsck -r /dev/sdxn  # more powerful option
      

      gdzie x to litera dysku, a n to numer partycji, na przykład /dev/sdb1dla pierwszej partycji na dysku b.

  • UDF prawdopodobnie nie ma narzędzi do naprawy systemu plików,

    • FOSS
    • Może można znaleźć narzędzia do naprawy w systemie Windows za pomocą tego linku: narzędzia fsck dla UDF , a niektóre narzędzia są dostępne jako kod źródłowy
    • Można utworzyć w Ubuntu
    • Kompatybilny z linkami w stylu linux.
    • Kompatybilny z uprawnieniami w stylu Linux. Możesz tworzyć i modyfikować uprawnienia poszczególnych plików (co nie jest możliwe w przypadku FAT i NTFS).
    • Partycja UDF nie będzie monitowana o formatowanie przez Windows 10 (podczas gdy dotyczy to systemu plików linux ext4 i może zostać przypadkowo zniszczona).
    • Jak utworzyć i używać UDF: Używanie UDF jako następcy FAT dla pamięci USB

      Tak więc, aby go użyć, zakładając, że pamięć USB to /dev/sdx:

      1. Zainstaluj pakiet udftools

        sudo apt-get install udftools
        
      2. Utwórz tablicę partycji i jedną partycję za pomocą gpartedlubgnome-disks

      3. Przetrzyj pierwszy mibibajt partycji docelowej ryzykownym dd(sprawdź dwukrotnie wiersz poleceń!)

        sudo dd if=/dev/zero of=/dev/sdx1 bs=1M count=1
        
      4. Run mkudffs,

        sudo mkudffs -b 512 --media-type=hd --lvid=my-label /dev/sdx1
        

      Wyczyść pierwszy mibibajt partycji, aby usunąć poprzednie informacje o systemie plików (lub inne pozostałe dane), aby zapobiec wykryciu pamięci USB jako FAT po sformatowaniu za pomocą UDF.

      Ma -b 512to na celu wymuszenie rozmiaru bloku systemu plików równego rozmiarowi bloku fizycznego pamięci USB, zgodnie ze specyfikacją UDF. Dostosuj go, jeśli masz szczęście posiadania pamięci USB o bardziej odpowiednim rozmiarze bloku.

      Następnie pamięć USB będzie mogła być używana do odczytu i zapisu w GNU / Linux i innych bezpłatnych systemach operacyjnych, ale także w bieżących wersjach systemu Windows (tylko do odczytu w nieaktualnej wersji XP) i MacOS.

  • exFAT to kolejna opcja. Jest nowy w porównaniu do FAT32 i UDF i twierdzi, że działa dobrze

    • natywnie z Windows
    • z MacOS
    • z Linuksem

Więcej o exFAT

Zacząłem testować exFAT w Ubuntu. Zamierzam zredagować tę odpowiedź, gdy będę miał większe doświadczenie w korzystaniu z niej. Zacznijmy od następujących linków ,

i ten wiersz poleceń, aby zainstalować obsługę [odczytu / zapisu] dla exFAT w Ubuntu

sudo apt-get install exfat-utils exfat-fuse
  • Można go utworzyć w systemie Windows i MacOS oraz w systemie Linux za pomocą następującego wiersza polecenia

    sudo mkfs.exfat -n YOUR-LABEL /dev/sdxi
    

    gdzie xjest na przykład litera dysku i inumer partycji /dev/sdb1.

  • Może być obsługiwany w systemie Windows.

Moje pierwsze wyniki testu :

  • Tworzenie systemu plików exFAT działało dobrze w Ubuntu (16.04 LTS (64-bit), zainstalowany system z serią jądra Xenial (4.4.0-93-generic), na bieżąco).
  • Zapis i odczyt pliku większego niż 4 GiB zakończyły się powodzeniem. Ubuntu i exFAT współpracowały poprawnie i szybko (sprawdziłem z, md5suma szybkość była ograniczona przez system USB).
  • Ubuntu i Windows mogły odczytać to, co zostało utworzone w innym systemie operacyjnym. (Nie mam MacOS do testowania i muszę polegać na raportach innych osób).

Windows

Więc jeśli chcesz mieć pełny dostęp do odczytu / zapisu z Ubuntu i Windows, sugerowałbym użycie NTFS , który ma kronikowanie, jest bardzo debugowany i dopracowany jako [zastrzeżony] system plików dla Windows. (Możliwe jest również użycie exFAT .)

  • W Ubuntu możesz użyć programu GUI gparteddo stworzenia systemu plików NTFS.
  • W systemie Windows łatwo jest tworzyć systemy plików NTFS i exFAT (są one rodzime).

System operacyjny Mac

W MacOS można używać FAT32 , UDF i exFAT .

Możesz także użyć ext4 z obejściem, Ubuntu Server z serwerem SSH na maszynie wirtualnej . (Myślę, że to samo obejście będzie działać również w systemie Windows.) Może to być przydatne, jeśli zamierzasz uzyskać dostęp do wielu plików za pośrednictwem napędu i systemu plików, ale prawdopodobnie nie za pomocą małego pendrive USB2.

Zobacz ten link,

Korzystanie z ext4 na OS X Yosemite, długi, ale bezpieczny sposób

sudodus
źródło
3
AFAIR Windows XP nie może zapisywać na woluminach UDF. W dzisiejszych czasach nie stanowi to większego problemu, ale warto na wszelki wypadek zauważyć.
gronostaj
2
macOS domyślnie montuje wszystko jako tylko do odczytu NTFS (przypuszczam, że Apple nie wierzy, że obsługa zapisu NTFS jest wystarczająco niezawodna.)
gsnedders,
1
@gsnedders Oczekuję, że po prostu nie wierzą w Windows.
wizzwizz4
2
@sudodus Osobiście nie miałem żadnych problemów ze wszystkim, od ciężkiego zarządzania partycjami NTFS po manipulowanie strumieniami z Debiana, ale doceniam bezpieczeństwo danych. Również mam kopii zapasowej , więc nie ma znaczenia, jeśli stracę starych danych (można po prostu skopiować go z kopii zapasowej).
wizzwizz4,
2
Uwaga: możesz używać exfat na MacOS bez problemów (może nawet sformatować dysk jako exfat). exfat staje się również domyślny dla większych dysków flash / kart pamięci.
SztupY
11

Miałem podobny problem i nie chciałem ponownie sformatować pamięci USB, po prostu użyłem archiwizatora. Mniej więcej wszystkie nowoczesne GUI (takie jak File Roller, 7Zip itp.) Lub CLI pozwalają na dzielenie pliku archiwum. Ustaw limit podziału poniżej granicy FAT (około 4 GB), dla prędkości możesz wybrać niski współczynnik kompresji, nawet „przechowywać”, tj. Wcale nie kompresować, voila!

Oleg Łobaczow
źródło
5

Jeśli masz dostęp do komputera z systemem Windows, możesz przekonwertować system plików pamięci USB bez formatowania. Powinieneś użyć wiersza poleceń systemu Windows w następujący sposób: naciśnij Win + R, wpisz cmd-> OK, w otwartym oknie wprowadź polecenie, convert X: /FS:ntfsgdzie X:jest litera dla zamontowanej pamięci USB. W mniej niż minutę jest gotowy. Cieszyć się.

M. Dm.
źródło
2
Ta metoda może być przydatna :-) Ale konwersja systemu plików może być ryzykowna, dlatego przed konwersją zaleciłbym wykonanie kopii zapasowej wszystkiego, co ważne na pamięci USB. Nawiasem mówiąc, czy użyłeś tej metody? Czy przechowuje pliki? Czy to działa również do / z exfat?
sudodus
1
Użyłem tej metody kilka razy, wszystkie pliki były czytelne po tej procedurze. To narzędzie działa tylko w celu konwersji do NTFS, a nie odwrotnie.
M. Dm.
2

Ponowne formatowanie lub użycie podziału to świetne opcje, możesz też użyć zip do skompresowania pliku, po prostu wiedz, że niektóre pliki są już skompresowane, więc skompresowanie ich zwiększy je. (Możesz także utracić własność pliku, znaczniki czasu itp.)

Jebidieah Cornell
źródło