The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Два дня ЛОР героически сражался с Rsync..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Два дня ЛОР героически сражался с Rsync..."  –1 +/
Сообщение от chukcha (??) on 11-Дек-16, 00:49 
Понадобилось решить, казалось бы, очень простую задачу - осуществить резервное копирование с диска на диск,
исключив из него папки и файлы, лежащие ниже некоторых задаваемых папок.
Причем, обязательное условие - эти папки должны задаваться АБСОЛЮТНЫМИ путями.
Первым делом быстренько накидал свой вариант

rsync    -avpH      \
--exclude="home/chukcha/.cache/mozilla/firefox/*"                    \
--exclude="home/chukcha/.config/chromium/Default/*"                  \
--exclude="home/chukcha/.cache/moonchild productions/pale moon/*"    \
/home   /mnt/sdc1/

Но я очень плохо разбираюсь в премудростях синтаксиса Rsync, поэтому не удивительно, что он не заработал.
Тогда обратился за помощью к легендарному ЛОРУ - https://www.linux.org.ru/forum/general/13066819

Два дня лоровцы героически сражались с этой задачей, но увы, не справились.
Сдается мне, уже и не справятся, не по зубам, видно, потому обращаюсь за помощью к вам.


PS. Маленькая просьба: только пожалуйста, не надо меня учить "как делать", как это пытались делать лоровцы, а просто приведите рабочий скрипт.
Хотя я понимаю, что учить и тыкать в маны гораздо легче, но когда доходит до конкретики, так все разбегаются в разные стороны.


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Два дня ЛОР героически сражался с Rsync..."  +/
Сообщение от олхнтп on 11-Дек-16, 01:02 
>Причем, обязательное условие - эти папки должны задаваться АБСОЛЮТНЫМИ путями.

ну ты это пойди и расскажи авторам rsync-a

в --exclude пути всегда относительны base dir

rsync    -avpH      \
--exclude="/chukcha/.cache/mozilla/firefox/*"                    \
--exclude="/chukcha/.config/chromium/Default/*"                  \
--exclude="/chukcha/.cache/moonchild productions/pale moon/*"    \
/home   /mnt/sdc1/

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Два дня ЛОР героически сражался с Rsync..."  –1 +/
Сообщение от chukcha (??) on 11-Дек-16, 01:16 
>>Причем, обязательное условие - эти папки должны задаваться АБСОЛЮТНЫМИ путями.
> ну ты это пойди и расскажи авторам rsync-a

Иными словами, ты хочешь сказать, что эта задача нерешаема? :-O

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Два дня ЛОР героически сражался с Rsync..."  –1 +/
Сообщение от chukcha (??) on 11-Дек-16, 01:20 
> в --exclude пути всегда относительны base dir

Это я и без тебя знаю. Но возможно, есть другие решения, без использования параметра --exclude, а какого-то другого, подходящего под этот случай?

Например, лоровцы предлагали использовать 'filter' и даже привели готовый пример, но что-то у них с ним не сложилось, он тоже не заработал

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Два дня ЛОР героически сражался с Rsync..."  +/
Сообщение от олхнтп on 11-Дек-16, 02:28 
> а какого-то другого, подходящего под этот случай?

я не в куГсе, когда есть задача - я её решаю, а не ставлю принципиальных вопросов,
ну вот на фига конкретно ставит такую задачу "только абсолютные пути" ??
"умный в гору не пойдёт" (с) народное
не умеет - ну и фиг с ним, всю жизнь писал и буду писать относительные пути в exclude

бери тектовый редактор и gcc в руки и правь сырцы rsync

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

22. "Два дня ЛОР героически сражался с Rsync..."  +/
Сообщение от freehck email(ok) on 26-Янв-17, 08:56 
deleted
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Два дня ЛОР героически сражался с Rsync..."  +/
Сообщение от Аноним (??) on 11-Дек-16, 06:24 
https://gist.github.com/typomedia/6484306

но там исключения отдельно вынесены

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Два дня ЛОР героически сражался с Rsync..."  –1 +/
Сообщение от chukcha (??) on 11-Дек-16, 21:32 
Оказывается, всё-таки есть жизнь на Марсе! :) Спасибо за дельные советы!
Ну а те, кто первыми "высказался"... известно ведь, что  всегда наверху плавает.

Итак:

> https://gist.github.com/typomedia/6484306
> но там исключения отдельно вынесены

Посмотрел, спасибо. Интересное, хотя для моего юзерского понимания сложноватое решение, но возможно, придется к нему вернуться.


cat orig_exclude.txt| sed 's/^\/home//'>new_exclude.txt 
rsync    -avpH --exclude-from=new_exclude.txt /home   /mnt/sdc1/

> Второй вариант указать в качестве исходного пути "/" и добавить маски  
> "+ /home/" и "- *" в список исключений, при которых несмотря
> на указания пути "/" копироваться будет только /home.

Еще одно любопытное решение, спасибо. Как для меня, сложноватое решение, но тем не менее, дающее шанс, если ничего другое не сработает.

--------

А пока просьба рассмотреть решение, которое предложил один из лоровцев.
Оно привлекло меня  свое исключительной простотой.
К сожалению, у лоровца оказались сильно испорченые нервы, не долечился, видимо, и диалог прервался на самом интересном месте из-за его хамства.

Вот что он предложил:

rsync    -avpH      \
--filter="-/ /home/chukcha/.config/chromium/Default"                  \
--filter="-/ /home/chukcha/.cache/mozilla/firefox"                    \
--filter="-/ /home/chukcha/.cache/moonchild productions/pale moon"    \
/home   /mnt/sdc1/


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

Проверял его очень просто: запустил этот скрипт и наблюдал, что копируется, а что нет.
Оказалось, что копируется всё (разумеется, за исключением ранее скопированного), но к сожалению, корируется также и то, что содержится в строках исключения, а такого, конечно,  не должно быть.

Что я делаю не так - ума не приложу. Или все-таки это решение неправильное?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

9. "Два дня ЛОР героически сражался с Rsync..."  +1 +/
Сообщение от Freddy Cuper on 11-Дек-16, 08:36 
rsync обрабатывает маски относительно корня копирования, поэтому самым простым выходом будет запись списка исключения в файл и использование простого скрипта, который вырежет корень из имён путей в этом списке, а потом запустит rsync с передачей изменённого набора правил директивой --exclude-from

типа
cat orig_exclude.txt| sed 's/^\/home//'>new_exclude.txt
rsync    -avpH --exclude-from=new_exclude.txt /home   /mnt/sdc1/

Второй вариант указать в качестве исходного пути "/" и добавить маски  "+ /home/" и "- *" в список исключений, при которых несмотря на указания пути "/" копироваться будет только /home.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору
Часть нити удалена модератором

14. "Два дня ЛОР героически сражался с Rsync..."  –2 +/
Сообщение от chukcha (??) on 11-Дек-16, 23:09 
Оказывается, всё-таки есть жизнь на Марсе! :) Спасибо за дельные советы!
Ну а те, кто первыми "высказался"... известно ведь, что  всегда наверху плавает.

Итак:

> https://gist.github.com/typomedia/6484306
> но там исключения отдельно вынесены

Посмотрел, спасибо. Интересное, хотя для моего юзерского понимания сложноватое решение, но возможно, придется к нему вернуться.


cat orig_exclude.txt| sed 's/^\/home//'>new_exclude.txt 
rsync    -avpH --exclude-from=new_exclude.txt /home   /mnt/sdc1/


> Второй вариант указать в качестве исходного пути "/" и добавить маски  
> "+ /home/" и "- *" в список исключений, при которых несмотря
> на указания пути "/" копироваться будет только /home.

Еще одно любопытное решение, спасибо. Как для меня, сложноватое решение, но тем не менее, дающее шанс, если ничего другое не сработает.

--------

А пока просьба рассмотреть решение, которое предложил один из лоровцев.
Оно привлекло меня  свое исключительной простотой.
К сожалению, у лоровца оказались сильно испорченые нервы, не долечился, видимо, и диалог прервался на самом интересном месте из-за его хамства.

Вот что он предложил:

rsync    -avpH      \
--filter="-/ /home/chukcha/.config/chromium/Default"                  \
--filter="-/ /home/chukcha/.cache/mozilla/firefox"                    \
--filter="-/ /home/chukcha/.cache/moonchild productions/pale moon"    \
/home   /mnt/sdc1/


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

Проверял его очень просто: запустил этот скрипт и наблюдал, что копируется, а что нет.
Оказалось, что копируется всё (разумеется, за исключением ранее скопированного), но к сожалению, корируется также и то, что содержится в строках исключения, а такого, конечно,  не должно быть.

Что я делаю не так - ума не приложу. Или все-таки это решение неправильное?

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

15. "Два дня ЛОР героически сражался с Rsync..."  +2 +/
Сообщение от universite (ok) on 12-Дек-16, 00:03 
> Оказывается, всё-таки есть жизнь на Марсе! :) Спасибо за дельные советы!
> Ну а те, кто первыми "высказался"... известно ведь, что  всегда наверху
> плавает.

Мальчик. Не хами тут. Тебя и прокси не спасет.
Внемли умные мысли старожилов форума.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору
Часть нити удалена модератором

21. "Два дня ЛОР героически сражался с Rsync..."  +/
Сообщение от Andrey Mitrofanov on 15-Дек-16, 12:28 
> А чего тут делиться? Спросите у тех двух супер-знатоков, что обгадили тему.

Млицыя!! Караул!1  Невинность провокатора флейма оскорблена.  Всех расстрелять.

> Они-то наверняка всё знают и поучают всех, что и как надо делать,
> а я так, просто ламерок неграмотный.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру