Имеется огромная файлопомойка.
Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
Причем некоторые директории в виде симлинков.в rsync писать огромный список запрещенных расширений?
> Имеется огромная файлопомойка.
> Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
> Причем некоторые директории в виде симлинков.1.убрать права на чтение с файлов: chmod -r $(find /path/dir -type f)
2.скопировать cp -r /path/dir /path/to
3.вернуть права см. п1
>> Имеется огромная файлопомойка.
>> Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
>> Причем некоторые директории в виде симлинков.
> 1.убрать права на чтение с файлов: chmod -r $(find /path/dir -type f)Файлов слишком много ~ больше 100М
отрабатывать будет очень долго
Файлопомойкой активно пользуются.
> 2.скопировать cp -r /path/dir /path/to
> 3.вернуть права см. п1
я как раз борюсь с проблемой как tar с параметром -N убедить не ложить пустые директории в архив (в которых все файлы оказываются старше чем дата) - у меня получается весь архив из пустых директорий если все файлы старше даты
> Имеется огромная файлопомойка.
> Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
> Причем некоторые директории в виде симлинков.
> в rsync писать огромный список запрещенных расширений?mtree есть в *bsd
можно таким скриптом
cd /path/to/dir; for item in `find . -type d -o -type l`; do mkdir /path/to/copydir/"$item"; done
> for item in `find . -type dНа большой Ф-помойке и в зависимости от шела может "не влезть" в [ограниченную] ком.строку при расширении. Хотя, может, я и придумываю что.
>> for item in `find . -type d
> На большой Ф-помойке и в зависимости от шела может "не влезть" в
> [ограниченную] ком.строку при расширении.Плюс зоопарк кодировок и спецсимволов.
> Имеется огромная файлопомойка.
> Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
> Причем некоторые директории в виде симлинков.
> в rsync писать огромный список запрещенных расширений?( cd $from_dir/; find \! -type f ) | cpio -padmu $to_dir/
Симлинки просто скопируются: с путями в них (относительные/абсолютные) и ссылками на файлы нужно разбираться отдельно.
Просто только директории (дерево) пересоздать:
( cd $from_dir/; find -type d ) | ( cd $to_dir; xargs mkdir )
---Нет, не проверял.
> Просто только директории (дерево) пересоздать:
> ( cd $from_dir/; find -type d ) | ( cd $to_dir; xargs
> mkdir )выглядит красиво
> ---Нет, не проверял.
щас проверю на тестовом дереве.
>> Просто только директории (дерево) пересоздать:
>> ( cd $from_dir/; find -type d ) | ( cd $to_dir; xargs
>> mkdir )
> выглядит красиво
>> ---Нет, не проверял.
> щас проверю на тестовом дереве.
( cd $from_dir/; find . -type d ) | ( cd $to_dir; xargs -0 mkdir )Вываливается список директорий:
./Saint-Preux/To Be Or Not 1980
./Saint-Preux/Concerto Pour Une Voix 1969
./Saint-Preux/Le piano d'Abigail 1983
./Saint-Preux/Concerto pour piano 1977
./Saint-Preux/_Le_piano_sous_la_merLaMer 1972
./Saint-Preux/Invitation In Paris 1987
./Saint-Preux/Samara 1976
./Saint-Preux/YOUR HAIR & MISSA AMORIS 1975
./Camel
./Camel/Harbour Of Tears - 1996
./Turandot Puccini
./smislovie_galucinacii
./smislovie_galucinacii/Obratnaya_Storona_Zemli
./smislovie_galucinacii/Bol'shie_plany
: File name too long
>
> ( cd $from_dir/; find . -type d ) | ( cd $to_dir; xargs -0 mkdir )
>Митрофаныч забыл -print0
( cd $from_dir/; find . -type d -print0 ) | ( cd $to_dir; xargs -0 mkdir )
>> Имеется огромная файлопомойка.
>> Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
>> Причем некоторые директории в виде симлинков.
>> в rsync писать огромный список запрещенных расширений?
> ( cd $from_dir/; find \! -type f ) | cpio -padmu $to_dir/
cpio: Couldn't stat "./smislovie_galucinacii/Bol'shie_plany/09._Aprel'.mp3": No such file or directory
cpio: Couldn't stat "./smislovie_galucinacii/Bol'shie_plany/04._Za_shirmami.mp3": No such file or directory
cpio: Couldn't stat "./smislovie_galucinacii/Bol'shie_plany/02._CHernaya.mp3": No such file or directory
cpio: Couldn't stat "./smislovie_galucinacii/Bol'shie_plany/03._Do_vstrechi.mp3": No such file or directory
cpio: Couldn't stat "./smislovie_galucinacii/Bol'shie_plany/wget-log": No such file or directory
cpio: Couldn't stat "./smislovie_galucinacii/Bol'shie_plany/music.wget": No such file or directory
cpio: Couldn't stat "./Saint-Preux[torrents.ru].torrent": No such file or directory
0 blocks
> Имеется огромная файлопомойка.
> Нужно скопировать в другое место только скелет директорий, без содержащихся там файлов.
> Причем некоторые директории в виде симлинков.
> в rsync писать огромный список запрещенных расширений?Оказалось проще:
rsync -av --include='*/' --exclude='*' source destinationОсталось сделать, чтоб симлинки корректно пересоздавались
Пара вариантов:
cd /new/folder
(cd /old/folder; find -type d ! -name .) | xargs mkdirи
cd /old/folder
find . -type d ! -name . -exec mkdir /new/folder/{} \;