Цифровой садик - приветственная

Цифровой садик - приветственная | Полный список всего, что тут есть | RSS | Подписаться через follow.it

08.01.2023

rsync

rsync –exclude

Конкретные файлы

rsync -avz --exclude=f1.txt --exclude=d1/d2/f4.txt source/ destination

Одна опция exclude, но список исключенного

rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

По маске (может совпадать и с именем, и с путём)

rsync -avz --exclude=*.txt source/ destination

Файлы в каталоге, но не каталог

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

По списку из файла

rsync -avrz --exclude-from=file-list.txt source/ destination

Уже совсем не exclude, но логика та ж.

По размеру:

rsync -avrz --max-size=1m source/ destination
rsync -avrz --min-size=20k source/ destination

Хитрый финт ушами - тока jpg-файлы

It is little trickier to exclude all other files and directories except those that match a certain pattern. Let’s say you want to exclude all other files and directories except the files ending with .jpg.

One option is to use the following command:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

When using multiple include/exclude option, the first matching rule applies.

–include='*.jpg' - First we are including all .jpg files. –include='*/' - Then we are including all directories inside the in src_directory directory. Without this rsync will only copy *.jpg files in the top level directory. -m - Removes the empty directories.

Another option would be to pipe the output of the find command to rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

-printf %P\\0\\n - will remove the src_directory/ from the file path. –files-from=- - means include only the files from the standard input (files passed from the find command)

rsync для того, чтоб скопировать, потом удалить. Без сохранения прав

(с винды).

sudo rsync -rltvmh --progress --remove-source-files /media/lib/READ/filosofia/ /home/linukosha/lib/READ/filosofia/

Или вот так без виндов

rsync -vvzrc --progress --remove-source-files dir host:dir
  • передать по ssh файлы из каталога на удалённый хост, удалить успешно перенесённое
rsync -av --delete -n --exclude=*~ --exclude=*#* --stats --progress --human-readable ~/Desktop/org ~/mnt/sdc1

Можно использовать –delete (удалить с цели отсутствующие файлы - то, что было удалено в источнике и отличается от –delete-excluded, когда удаляются ещё и исключённые из копирования с источника файлы).

rsync про каталоги

rsync /something here/ -a  # создаст внутри here каталог something
rsync /something/ here/ -a # поместит в каталог here содержимое каталога something

rm something и rm something/ — это разные вещи. и не только в rm. cp, ls и rsync — тоже

Автовозобновление копирования rsync-ом

Иногда возникает необходимость перенести кучу файлов с сервера на сервер. Ну или скопировать из каталога в каталог. Многие используют для этого rsync. Но есть одно неприятное обстоятельство – если отвалится сеть – то процесс остановится и не продолжится. Хорошо бы, чтобы он перезапускался автоматически. Запускать в тупом цикле – некрасиво. Хочется, чтобы процесс перестал работать, когда каталоги синхронизируются.

В общем я решаю эту проблему примерно так:

false; while [ $? != 0 ]; do rsync -avz --progress /var/www root@remoteserver:/var/www && sleep 10; done

Процесс rsync будет перезапускаться, пока rsync не отдаст код 0 (означающий, что каталоги синхронизированы). В sleep указываем через сколько секунд (минут, часов) перезапускать. Запускать лучше, как обычно, в tmux или screen.


Если у вас есть мысли, комментарии, предложения или отклики по поводу этой страницы или этого цифрового сада в целом, напишите мне сообщение на agnessa@agnessa.pp.ru. Мне ооочень интересно!

Задонатить.


An IndieWeb Webring 🕸💍