LINUX.ORG.RU

rsync - вопросы

 , , , ,


1

2

Всем привет.

1. Как средствами rsync передать файлы определённой маски (рекурсивно из определённого каталога)?

2. Требуется ли выключение компресси ssh при передаче файлов по ssh средствами rsync?

3. Как на сервере удалить из каталогов (или сам каталог) то, что отсутствует на клиенте?

То есть, на сервере лежит каталог, а на клиенте отсутствует. Как удалить рекурсивно каталог с сервера?

rsync: 3.1.2
ssh: 7.6p
★★

Последнее исправление: BitSum (всего исправлений: 2)

  1. С использованием --include и --exclude, вестимо.

  2. И rsync, и ssh могут сжимать данные при передаче. Что будет, если сжимать сразу у обоих, не знаю. Мне в rsync достаточно указывать.

Yorween
()
Последнее исправление: Yorween (всего исправлений: 1)
Ответ на: комментарий от Yorween

3. Как на сервере удалить из каталогов (или сам каталог) то, что отсутствует на клиенте?

То есть, на сервере лежит каталог, а на клиенте отсутствует. Как удалить рекурсивно каталог с сервера?

BitSum ★★
() автор топика
Последнее исправление: BitSum (всего исправлений: 2)

Поставь grsync и потыкай разные галочки. Погоняй на тестовых данных. Там в меню можно потом посмотреть все ключи которые были выбраны «Alt-R».

justAmoment ★★★★★
()

Как на сервере удалить из каталогов (или сам каталог) то, что отсутствует на клиенте? Есть пачка опций типа -delete-..., посмотри в мане. Часто достаточно -del но ман всё равно посмотри.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Спасибо. Ознакомился.

У меня используется опция `r`. В ман пейдже к опции r указано:

-r, --recursive
    This tells rsync to copy directories recursively. See also --dirs (-d).

    Beginning with rsync 3.0.0, the recursive algorithm used is now an incremental scan that uses much less memory than before and begins the transfer after the scanning of the first few directories have been completed. This incremental scan only affects our recursion algorithm, and does not change a non-recursive transfer. It is also only possible when both ends of the transfer are at least version 3.0.0.

    Some options require rsync to know the full file list, so these options disable the incremental recursion mode. These include: --delete-before, --delete-after, --prune-empty-dirs, and --delay-updates. Because of this, the default delete mode when you specify --delete is now --delete-during when both ends of the connection are at least 3.0.0 (use --del or --delete-during to request this improved deletion mode explicitly). See also the --delete-delay option that is a better choice than using --delete-after. 

Значит у меня остается только один параметр - `--del`

BitSum ★★
() автор топика

Мне нравится скрипт для rsync:

https://raw.githubusercontent.com/aprokopyev/utils/master/rsync.sh

Например, чтобы скопировать ось с одного VPS на другой:

/utils/rsync.sh data / new_vps:/

после первых трех параметров можно добавлять дополнительные свои, например:

/utils/rsync.sh data / new_vps:/ --exclude=/download --delete

anonymous
()

4. Как по транспорту rsync передать файлы не в точку назначения, которая указывается модулем, а туда, куда мне нужно?

Клиент:

rsync -rtzh --compress-level=9 --max-size=20m --bwlimit=516 --password-file=/etc/rsyncd.scrt --include='*.txt' --exclude='*.*' --rsync-path="mkdir -p /home/servers/destdir && rsync" "/home/servers/dir" rsync://servers@192.168.2.23:873/data1

Сервер:

max connections = 999

[data1]
    path = /home/servers
    auth users = servers
    secrets file = /etc/rsyncd.scrt
    uid = servers
    read only = no
    list = yes
    hosts allow = *
    hosts deny =

С ssh делается просто:

rsync -rtzh --compress-level=9 --max-size=20m --bwlimit=516 --password-file=/etc/rsyncd.scrt --include='*.txt' --exclude='*.*' --rsync-path="mkdir -p /home/servers/destdir && rsync" "/home/servers/dir" servers@192.168.2.23:/home/servers

При этом я каждый раз могу указывать, куда я могу передать нужные мне файлы: servers@192.168.2.23:/home/servers, servers@192.168.2.23:/home/servers2, servers@192.168.2.23:/home/servers3 и тп

BitSum ★★
() автор топика
Ответ на: комментарий от BitSum

Это обуслевлено тем, что при работе с SSH слишком низкая производительность... толком ещё не понял с чем связано, но транспорт rsync явно быстрее.

BitSum ★★
() автор топика
Ответ на: комментарий от BitSum

Дополню. Алгоритм примерно такой:

подключаемся к серверу и пытаемся попасть в определённый каталог;

если каталог отсутствует, то мы его создаём и вновь пытаемся попасть в него;

синхронизируем.

BitSum ★★
() автор топика
Ответ на: комментарий от BitSum

Как по транспорту rsync передать файлы не в точку назначения, которая указывается модулем, а туда, куда мне нужно

Никак. Ты же не хочешь, чтобы тебе кто-то в /etc/passwd внезапно написал?

legolegs ★★★★★
()

5. Если rsync запускается через крон, а точнее выполняется скрипт, который дергает rsync каждую минуту, то может создаваться... бесконечное количество тасков.

Как проверить, выполняется ли... скрипт или rsync и если выполняется, то не выполнять скрипт или rsync? Мне кажется, что проверять статус работы скрипта самое оптимальное, чем работу rsync. В будущем хотелось бы получить многопоточный rsync, поэтому проверить работу скрипта самое оптмальное - ИМХО.

BitSum ★★
() автор топика
Последнее исправление: BitSum (всего исправлений: 2)
Ответ на: комментарий от slowpony

А если pidof попробовать?

if pidof -x "$0" >/dev/null; then
  exit 1
fi
BitSum ★★
() автор топика
Ответ на: комментарий от BitSum

Поправка... не проще, а костылём. тк при каждом вызове предыдущее выполнение программы завершается и начинается по новой. flock пока не осилил, ибо создаётся множество экземпляров и программа не выполняется.

BitSum ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.