2015-07-15 23 views
6

Próbuję połączyć duże pliki (niektóre GB) w bash. Próbowałemograniczenia przekierowania wyjścia bash?

cat file1 file2 file3 > result 

i to nie działa podczas

cat file1 file2 file3 >> result 

pracował. W obu przypadkach wynik pliku nie istniał wcześniej, a moje oczekiwania byłyby takie, że oba polecenia dają taki sam wynik.

W tym samym systemie wypróbowałem to samo z małymi plikami (tylko niektóre bajty) i oba polecenia dają takie same wyniki. Próbowałem znaleźć jakieś wyjaśnienie (na przykład here), ale nie mogłem znaleźć żadnego ...

Tak, wiem, jak rozwiązać mój problem, ale nadal jestem zaintrygowany. Czy ktoś jest w stanie wytworzyć wskazówkę?

+4

Co się stało po uruchomieniu pierwszego polecenia? – lcd047

+0

Czy wszystkie pliki są plikami _regularnymi_? – Alepac

+0

@ lcd047 poszczególne pliki to .gz.parts, a wynik nie pozwoliłby mi na dekompresję, spowodował błąd – Silentfury

Odpowiedz

1

kiedy muszę podzielić plik używam trick, który działa bardzo dobrze:

tar --one-file-system -czv /home | split -b 4000m - /media/DRIVENAME/BACKUPNAME.tgz 

następnie, aby przywrócić:

cat /media/DRIVENAME/BACKUPNAME.tgz.* | tar -x /

więc kot wykonać zadanie bez względu na containt jest. Więc jeśli nie działa to, czy istnieje zła produkcja plików podzielonych lub ograniczenie z systemem plików. Jakiego systemu plików używasz?