Форум русскоязычного сообщества Ubuntu


Автор Тема: Помогите написать регулярное выражение  (Прочитано 373 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Доброго всем дня!
Помогите написать рег выражение.
Есть две папки в которых, находятся папки и файлы . Нужно сравнить эти папки и вывести(или записать в файл) список всех измененных и удаленных файлов/папок за вчерашний день.

Первоначально все сделал через diff. Но, потом понял, что он же сравнивает все файлы и папки. А, мне нужны только, те, что за последние сутки были. Тут то и загвоздка. Не знаю, что и делать.

Подскажите, кто можете, что тут можно сделать?
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #1 : 26 Август 2016, 13:56:58 »
Нужно сравнить эти папки
вывести(или записать в файл) список всех измененных и удаленных файлов/папок за вчерашний день.
Это две разные задачи: сравнить — значит вывести отличие одного от другого, список измененных — это список измененных, а вот что касается удаления, то тут надо где-то хранить «эталонный» список. Предлагаю внятно сформулировать что именно Вам надо.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #2 : 26 Август 2016, 14:16:18 »
saifuddin, есть такое понятие как конвеер. Поиск изменений по времени. Это передаёшь на вход твоему алгоритму сравнения.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #3 : 02 Сентябрь 2016, 16:05:42 »
Хорошо, подскажите, как тогда можно реализовать инкрементальный бэкап файлов с таким условием, чтобы у меня не накапливались все удаленные файлы в полном backup. А, удалялись.

Объясняю по подробнее.

Есть три папки:
full полный backup
inc  Incremental backup
origin папка с текущими файлами

Делаем полный backup сохраняя в него все файлы из origin. Проходит день. Делаем inc backup. В этом backup должны находиться все добавленные и модифицированные файлы. Так же видимо виде некого файла должен находиться список того, что было удалено за этот день. И таких inc должно быть несколько шт.

Следующим шагом нужно будет по порядку эти inc backup склеить. Повторюсь с обязательным условием, чтобы не накапливались старые файлы, а удалялись если их не было на момент создания inc backup. Так же должны быть добавленные новые и модифицированные файлы и папки.

Не важно делать в архиве или в папке. Так как речь идет об изображениях по большей части.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #4 : 02 Сентябрь 2016, 16:09:59 »
Зачем нужны inc? rsync например так и сделает сразу с full что надо без всяких списков…
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #5 : 02 Сентябрь 2016, 16:11:57 »
Нужно иметь возможность отката назад на несколько дней. Вот и нужен inc backup из-за этого. До этого использовал rsync, пока не появилась потребность в откате назад.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1969
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #6 : 02 Сентябрь 2016, 23:25:56 »
Цитировать
чтобы у меня не накапливались все удаленные файлы в полном backup
Код: Bash
  1. while read F ; do
  2. [ -f "$orign_dir${F#$full_bkp_dir}" ] || rm -vf "$F"
  3. done < <(find "$full_bkp_dir" -type f) &> Log.txt
  4.  

В переменных-путей к директориям full_bkp_dir и orign_dir не ставить слеш в конце.
« Последнее редактирование: 02 Сентябрь 2016, 23:48:38 от renzrv »

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #7 : 03 Сентябрь 2016, 10:46:43 »
Спасибо за скрипт!

Вот думаю, возможно придется ставить rdiff-backup он вроде умеет делать, все то, что я оговорил в условии...
Python+rsync  с возможностью отката на нужную дату. Кто-то уже пользовался им?

Пользователь добавил сообщение 03 Сентябрь 2016, 10:48:02:
Честно большое спасибо за этот скрипт. А, то я сильно голову ломал, как на баше можно это реализовать... )))
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #8 : 12 Сентябрь 2016, 11:07:43 »
Добрый день.
Помогите написать bash скрипт
Нужно рекурсивно пройтись по папкам, в каждой папке возможны еще папки. Нужно папке выставить rx права.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #9 : 12 Сентябрь 2016, 11:41:48 »
Код: Bash
  1. find <папка> -depth -type d -exec chmod 555 {} +

Пользователь добавил сообщение 12 Сентябрь 2016, 11:55:04:
Вариант 2
Код: Bash
  1. shopt -s globstar ; chmod 555 **/ ; shopt -u globstar
« Последнее редактирование: 12 Сентябрь 2016, 11:55:04 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 917
    • Просмотр профиля
Re: Помогите написать регулярное выражение
« Ответ #10 : 12 Сентябрь 2016, 12:05:01 »
Большое спасибо! Теперь буду знать, как это делать. Раньше видел, подобный вариант, только ни как не мог его найти.
Ubuntu 14.04 64bit | Intel Core i5-2310 CPU @ 2.90GHz |
DIMM DDR3 CMX4GX3M1A1600C9 1333MHz 12GB |Radeon HD 6750 1GB |
WDC WD10EZEX-00R 1TB

 

Страница сгенерирована за 0.075 секунд. Запросов: 24.