← All posts tagged shell

Чтобы скопировать всё музло НЕ создавая копию каталогов (как это было бы с rsync -avrh), а чтобы все файлы лежали одной кучей в одной папке - надо написать чё-то типа такого:

cd /dir/with/music

find . -name "*.ogg" -exec cp "{}" ./ \;

Бэкслэш и точка с запятой нужны, без них не пашет.

Сегодня полностью осознал, что фраза "не работай под рутом" написана кровью. Вместо $ chmod 755 -R ./* набрал $ chmod 755 -R /* . Хорошо, что вовремя заметил и до /mnt не докатилось. Хорошо, что не сказал sudo или не был изначально #.

Если вы копируете файл по rsync с авторизацией по ssh и при этом локальный юзер и удалённый имеют разные имена (в моём случае совпадали тока id) то может возникнуть ошибка доступа:

rsync: mkstemp "бла бла" failed: Permission denied (13)

нужно добавить ключ --numeric-ids. Он передаёт не имена, а id. В моём случае ключ помог.

ВНЕЗАПНО обнаружил, что rsync понимает --exclude\--include не один раз. Можно тасовать порядок ключей и повторять их с разными значениями, чтобы добиться нужной фильтрации файлов. Крутота.

Если при использвании --include\--exclude ваш rsync матерится, что
[generator] risking file <какой-то файл> because of pattern <ваша маска>
то нужно просто добавить ключ "--delete-excluded", который сносит всё, чего нет в сформировавшемся списке.