Есть ли способ скопировать весь каталог, но только папки? У меня есть поврежденный файл где-то в моем каталоге, который вызывает сбой моих жестких дисков.
Поэтому вместо того, чтобы копировать поврежденный файл на другой жесткий диск, я хотел просто скопировать папки, потому что у меня есть скрипты, которые ищут сотни папок, и я не хочу создавать их вручную.
Я искал руководство по cp, но ничего не увидел (возможно, я его пропустил)
Скажем, у меня есть эта структура на моем отказавшем жестком диске:
dir1
files
dir2
files
files
dir4
dir3
files
Все, что мне нужно, это структура каталогов, а не файлы вообще.
Итак, я бы закончил на новом HDD:
dir1
dir2
dir4
dir3
Надеюсь, кто-то знает некоторые хитрости!
rsync
для копирования структуры каталогов и сохранения разрешений и атрибутов] ( stackoverflow.com/a/9242883/52074 ). Использование plainmkdir -p
не сохраняет разрешений и атрибутов .Ответы:
Если вы хотите отразить каркас каталога и не копировать файлы:
Что тут происходит:
-links 2
чтобы найти максимально глубокие каталоги .mkdir -p
сделает все недостающие каталоги по пути.Я сделал это так, а не
find -type d -exec mkdir -p "/path/to/backup/{}" \;
потому, что это обрезает целую кучуmkdir
звонков. Мы можем быстро доказать это с помощью небольшого теста. Вот дерево тестов, за которым следует то, что я запустил, чтобы сравнить две команды:И это будет только лучше в реальном решении с тысячами каталогов.
источник
find
в качестве отправной точки используется текущий рабочий каталог. Если вы хотите использовать другой путь, используйте синтаксис:find /path/to/search/ -type.....
find -type d -exec mkdir -p "/media/jinglez/TVSeries/TV Series"/{}" \;
и все должно быть в порядке? Кажется, это займет некоторое время: /find -type d -links 2 -exec mkdir -p "/media/jinglez/TVSeries/TV Series/{}" \;
Довольно легко сделать с помощью Python One-Liner:
Как сценарий это можно переписать так:
источник