Автор Гілка: Примітивна синхронізувалка  (Прочитано 8067 раз)

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Примітивна синхронізувалка каталогів на двох компах (які не сполучені мережею).
використання: розпаковуєм в директорію, яка має синхронізуватись (зрозуміло, що на обох комп'ютерах) пітонівський скрипт можна занести не знати куди і зробити на нього символічне посилання з ~/bin шелівський скрипт мусить залишатись в директорії, яка синхронізується. В шелскрипті змінюєм розширення на потрібні. Потім виконуєм sh lister.sh в  "застарілому" каталозі, переносим filelist.in в "новий" і перейменовуєм його в filelist.out. Припустімо, що пітонівський скрипт ви віднесли в не знати який читабельний каталог та створили на нього символьне посилання в якійсь з директорій PATH і назвали те посилання mutch. В "новому" каталозі виконуєм sh lister.sh потім mutch new newer воно видасть вам список файлів, що ще не "з'явились" на старій машині та тих, що застаріли якщо серед них ви бачите імена файлів, які не бажано переносити -- виконуєте mutch new newer > filelist.ban і видаляєте звідти всі імена файлів, що вас влаштовують, якщо таких, що не влаштовують мало: переносите їх на початок файлу і трете його до кінця (dG  - у вімі, для переносу на верх файлу та повернення на стрічку з якої перенесли: ddggP``), якщо ж таких файлів не бачите - просто виконайте touch filelist.ban (ну ледачий я для написання в пітоніському скрипті коду для обробки помилок на випадок відсутності такого файлу). Виконуєм mutch auto і розпаковуєм work.tbz2 в "застарілій" директорії.
« Змінено: 2009-03-02 16:14:32 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: Примітивна синхронізувалка
« Відповідей #1 : 2009-03-02 15:54:55 »
...або використовуємо старий надійний rsync.
dd if=/dev/zero of=/dev/null

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #2 : 2009-03-02 16:10:02 »
Примітивна синхронізувалка каталогів на двох компах (які не сполучені мережею).
Цитата
      The rsync remote-update protocol allows rsync to transfer just the dif-
       ferences between two sets of files across the network connection, using
       an efficient  checksum-search  algorithm  described  in  the  technical
       report that accompanies this package.

/me навіть не здогадувався про існування rsync і не знав яка зараза жере стільки трафіку при синхронізації дерева портежів  :'(

P.S.
Практична проблема в мене була: не перезаписувати по сто раз флешку через парочку файлів, що змінились (ресурс флешки обмежений) і не намагатись запам'ятати, які саме файли змінювались впродовж дня.
« Змінено: 2009-03-02 16:13:50 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: Примітивна синхронізувалка
« Відповідей #3 : 2009-03-02 16:26:35 »
Цитата
      Rsync  copies files either to or from a remote host, or locally on the current host (it does not support
       copying files between two remote hosts).

dd if=/dev/zero of=/dev/null

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #4 : 2009-03-02 18:41:06 »
Цитата
Практична проблема в мене була: не перезаписувати по сто раз флешку через парочку файлів, що змінились (ресурс флешки обмежений) і не намагатись запам'ятати, які саме файли змінювались впродовж дня.
о, теж маю таку проблему, з бекапами.

так шо, rsync кращий?
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #5 : 2009-03-02 19:21:13 »
prapor мені rsync'ав з бука на USB HDD репозиторій Деба. Без мережі.
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #6 : 2009-03-02 19:52:13 »
Гм... цікаво. Тобто коли за мету поставлено зекономити місце: виявити оновлені файли і лише їх запакувати (всі старі архіви на флешці зберігаються для запобігання фрагментації та зайвому переписуванню в одному й тому ж місці) можна користуватись системою синхронізхації, яка уподібнює пару каталогів як 2 краплі води?
Ану конкретні команди в студію... (тут поради, а не критика ;) )
« Змінено: 2009-03-02 19:52:34 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній piktor

  • Видавець
  • *******
  • дописів: 3396
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #7 : 2009-03-02 20:04:30 »
(Злорадно) man rsync  :)
Всим, хто тоне й не знає,
За що вхопитись,
Хто вже з останніх
Вибився сил:
Попереджаю - я не колода,
Попереджаю - я крокодил.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #8 : 2009-03-02 21:25:28 »
(Злорадно) man rsync  :)
Можна подумати - я його не читав.  :)

Цитата
      -a, --archive
              This  is equivalent to -rlptgoD. It is a quick way of saying you
              want recursion and want to preserve almost everything  (with  -H
              being  a  notable  omission).   The  only exception to the above
              equivalence is when --files-from is specified, in which case  -r
              is not implied.

              Note that -a does not preserve hardlinks, because finding multi‐
              ply-linked files is expensive.  You must separately specify  -H.
rsync - івське уявлення про архів: жорстко скопіювати файли.
(злорадно) читати пости перед відповіддю.
« Змінено: 2009-03-02 21:32:17 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: Примітивна синхронізувалка
« Відповідей #9 : 2009-03-02 21:45:01 »
Спочатку докладний опис протоколу обміну - потім його реалізація.
dd if=/dev/zero of=/dev/null

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #10 : 2009-03-02 21:49:42 »
Спочатку докладний опис протоколу обміну - потім його реалізація.
Off-topic:
-- а мій брат кота забив.
-- до чого це?
-- до забору.
Чого стосувалась ваша фраза?
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: Примітивна синхронізувалка
« Відповідей #11 : 2009-03-02 21:59:24 »
Протокол обміну - це докладний опис того, як саме дані з однієї машини будуть переноситись на іншу, чи переноситись будуть тільки зміни між двома копіями, критерій визначення змін, чи повинні дані стискатись, шифруватись, роль змінного носія і тд.
dd if=/dev/zero of=/dev/null

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #12 : 2009-03-02 23:37:19 »
Ану конкретні команди в студію... (тут поради, а не критика ;) )
http://samba.anu.edu.au/rsync/examples.html
?
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Примітивна синхронізувалка
« Відповідей #13 : 2009-03-03 00:17:41 »
Ну знову до забору... Та що ви причепились зі своїм rsync ?
Мова йде про випадок, коли нема прямого зв'язку з директоріями: нема контакту через мережу, нема виносного вінта. Ну відкіля rsync знає, які саме файли оновити, коли нема зв'язку? А тут все (майже все) під це підлаштовано: збираються данні про всі файли і окремим файлом заливаються в архів синхронізації. Де в rsync файли заборонені для копіювання? Тут про це згадувалось (filelist.ban). Читайте дописи, а не товчіть воду в ступі  >:(

Протокол обміну - це докладний опис того, як саме дані з однієї машини будуть переноситись на іншу, чи переноситись будуть тільки зміни між двома копіями, критерій визначення змін, чи повинні дані стискатись, шифруватись, роль змінного носія і тд.
Ну а я можу написати що таке числове інтегрування... і знову залишиться питання: "до чого це?"
« Змінено: 2009-03-03 00:23:12 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Re: Примітивна синхронізувалка
« Відповідей #14 : 2009-03-03 03:28:10 »
Ну знову до забору... Та що ви причепились зі своїм rsync ?
Мова йде про випадок, коли нема прямого зв'язку з директоріями: нема контакту через мережу, нема виносного вінта. Ну відкіля rsync знає, які саме файли оновити, коли нема зв'язку? А тут все (майже все) під це підлаштовано: збираються данні про всі файли і окремим файлом заливаються в архів синхронізації. Де в rsync файли заборонені для копіювання? Тут про це згадувалось (filelist.ban). Читайте дописи, а не товчіть воду в ступі  >:(

Протокол обміну - це докладний опис того, як саме дані з однієї машини будуть переноситись на іншу, чи переноситись будуть тільки зміни між двома копіями, критерій визначення змін, чи повинні дані стискатись, шифруватись, роль змінного носія і тд.
Ну а я можу написати що таке числове інтегрування... і знову залишиться питання: "до чого це?"
А як по вашому люди дізнаються про протокол обміну електронною поштою, реверс-інжинірінгом MTA? Чому для того, щоб здогадатись що ви маєте на увазі обов'язковою умовою є колупання в коді? Я запитав - що саме повинно відбуватись з даними, як ви собі все це уявляєте - фактично, просто про те, як влаштована ваша програма. Що тут не зрозуміло?

Таки man rsync. Пошук по слову exclude.
dd if=/dev/zero of=/dev/null