Czy istnieje sposób na skopiowanie całego katalogu, ale tylko folderów? Mam gdzieś w katalogu uszkodzony plik, który powoduje awarię dysków twardych.
Zamiast kopiować uszkodzony plik na inny dysk twardy, chciałem po prostu skopiować foldery, ponieważ mam skrypty wyszukujące setki folderów i nie chcę ręcznie tworzyć ich wszystkich.
Przeszukałem instrukcję cp, ale nic nie widziałem (mogłem to przegapić)
Powiedzmy, że mam tę strukturę na moim uszkodzonym dysku twardym:
dir1
files
dir2
files
files
dir4
dir3
files
Chcę tylko struktury katalogów, a nie żadnych plików.
Skończyło się na nowym dysku twardym:
dir1
dir2
dir4
dir3
Mam nadzieję, że ktoś zna jakieś sztuczki!
rsync
do kopiowania struktury katalogów ORAZ zachowania uprawnień i atrybutów] ( stackoverflow.com/a/9242883/52074 ). Używanie zwykłegomkdir -p
nie zachowuje uprawnień i atrybutów .Odpowiedzi:
Jeśli chcesz wykonać kopię lustrzaną szkieletu katalogu i nie kopiować żadnych plików:
Co tu się dzieje:
-links 2
aby znaleźć najgłębsze możliwe katalogi .mkdir -p
utworzy po drodze brakujące katalogi.Zrobiłem to w ten sposób, a nie
find -type d -exec mkdir -p "/path/to/backup/{}" \;
dlatego, że ograniczy to cały zestawmkdir
połączeń. Możemy to szybko udowodnić za pomocą małego testu. Oto drzewo testowe, a następnie to, co uruchomiłem, aby porównać dwa polecenia:A to tylko poprawi się w rozwiązaniu opartym na prawdziwych słowach z tysiącami katalogów.
źródło
find
użyje bieżącego katalogu roboczego jako punktu początkowego. Jeśli chcesz użyć innej ścieżki, użyj składni:find /path/to/search/ -type.....
find -type d -exec mkdir -p "/media/jinglez/TVSeries/TV Series"/{}" \;
i wszystko powinno być w porządku? Wydaje się, że zajmuje to trochę czasu: /find -type d -links 2 -exec mkdir -p "/media/jinglez/TVSeries/TV Series/{}" \;
Całkiem łatwo zrobić z python one-liner:
Jako skrypt można to przepisać w następujący sposób:
źródło