Автор Тема: Синхронизация rsync  (Прочитано 1017 раз)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Синхронизация rsync
« : 24.04.2015 18:25:58 »
Нужна авто синхронизация данных из съемных носителей при их подключении к пк. Например подключаю я жесткий диск и он синхронизируется с какой-то папкой в хом.
Типа:
rsync -r -t -p -v --progress --delete -c -s --exclude "МИД/" /run/media/koi/Sansa-projects/Документы /home/koi

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

Как сделать чтобы при подключении устройства синхронизация выполнялась сама?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 365
  • Учиться .... Телепатами не рождаются, ими ....
Re: Синхронизация rsync
« Ответ #1 : 24.04.2015 22:06:09 »
Написать правило udev, которое запускало ваш скрипт?

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #2 : 25.04.2015 11:55:38 »
Написать правило udev, которое запускало ваш скрипт?
Да, пытался вчера весь вечер, сегодня вот ковыряю. Но хотелось бы альтернативу. Посредствам демона rsync например.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 365
  • Учиться .... Телепатами не рождаются, ими ....
Re: Синхронизация rsync
« Ответ #3 : 25.04.2015 12:02:05 »
А какая у вас оконная среда, может её средствами можно воспользоваться. Или вам в чистой консоле надо?

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #4 : 25.04.2015 12:57:06 »
А какая у вас оконная среда, может её средствами можно воспользоваться. Или вам в чистой консоле надо?
KDE. У меня в планировщике стоят задания, но это тоже не то. Там нельзя сделать, чтоб при подключении устройства запускалась программа. Или я просто не знаю как.

Пока сошелся на таком решении.
Создал правило в /etc/udev/rules.d/75-toshiba-hdd-usb.rules
Содержание такое:
ACTION!="add", SUBSYSTEM=="usb", SYSFS{idProduct}=="a00a", SYSFS{idVendor}=="0480", RUN+="/opt/rsyncz/rsync_hdd_koi1.sh"
Но оно как-то странно работает. При запуске ОС с включенным диском, работает. Если переткнуть диск то не работает. Где ошибка?
« Последнее редактирование: 25.04.2015 12:59:15 от Koi »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 365
  • Учиться .... Телепатами не рождаются, ими ....
Re: Синхронизация rsync
« Ответ #5 : 25.04.2015 13:19:08 »
Наверное, устройство перехватывается раньше вашего правила, правилами, которые позволяют системе автомонтировать устройства.

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #6 : 25.04.2015 14:51:39 »
Наверное, устройство перехватывается раньше вашего правила, правилами, которые позволяют системе автомонтировать устройства.
Может быть. По тесту он читает, но не выполняет правило. Как это изменить?
# udevadm test $(udevadm info -q path -n sdb) 2>&1
calling: test
version 201
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          201
file size:         5617786 bytes
header size             80 bytes
strings            1260826 bytes
nodes              4356880 bytes
load module index
read rules file: /lib/udev/rules.d/10-dm.rules
read rules file: /lib/udev/rules.d/11-dm-lvm.rules
read rules file: /etc/udev/rules.d/11-hplj10xx.rules
read rules file: /lib/udev/rules.d/13-dm-disk.rules
read rules file: /lib/udev/rules.d/20-crystalhd.rules
read rules file: /etc/udev/rules.d/25-libsane.rules
read rules file: /etc/udev/rules.d/40-huawei-e173.rules
unknown key 'SYSFS{idProduct}' in /etc/udev/rules.d/40-huawei-e173.rules:1
invalid rule '/etc/udev/rules.d/40-huawei-e173.rules:1'
read rules file: /lib/udev/rules.d/40-ignore-remove.rules
read rules file: /lib/udev/rules.d/40-libgphoto2.rules
read rules file: /lib/udev/rules.d/40-usb-media-players.rules
read rules file: /lib/udev/rules.d/40-usb_modeswitch.rules
read rules file: /lib/udev/rules.d/42-usb-hid-pm.rules
read rules file: /lib/udev/rules.d/50-firmware.rules
read rules file: /lib/udev/rules.d/50-udev-default.rules
read rules file: /lib/udev/rules.d/56-hpmud.rules
read rules file: /lib/udev/rules.d/60-alsa-control.rules
read rules file: /lib/udev/rules.d/60-cdrom_id.rules
read rules file: /lib/udev/rules.d/60-fuse.rules
read rules file: /lib/udev/rules.d/60-pcmcia.rules
read rules file: /lib/udev/rules.d/60-persistent-alsa.rules
read rules file: /lib/udev/rules.d/60-persistent-input.rules
read rules file: /lib/udev/rules.d/60-persistent-serial.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules                         
read rules file: /lib/udev/rules.d/60-persistent-storage.rules                               
read rules file: /lib/udev/rules.d/60-persistent-v4l.rules                                   
read rules file: /etc/udev/rules.d/60-raw.rules                                             
read rules file: /lib/udev/rules.d/60-vboxadd.rules                                         
read rules file: /lib/udev/rules.d/60-vhba.rules                                             
read rules file: /lib/udev/rules.d/61-accelerometer.rules                                   
read rules file: /lib/udev/rules.d/62-multipath.rules
read rules file: /lib/udev/rules.d/64-btrfs.rules
read rules file: /lib/udev/rules.d/64-md-raid.rules
read rules file: /lib/udev/rules.d/69-cd-sensors.rules
IMPORT found builtin 'usb_id --export %p', replacing /lib/udev/rules.d/69-cd-sensors.rules:89
read rules file: /lib/udev/rules.d/69-dm-lvm-metad.rules
read rules file: /lib/udev/rules.d/69-libmtp.rules
read rules file: /etc/udev/rules.d/70-persistent-cd.rules
read rules file: /lib/udev/rules.d/70-power-switch.rules
read rules file: /lib/udev/rules.d/70-printers.rules
read rules file: /lib/udev/rules.d/75-cd-aliases-generator.rules
read rules file: /lib/udev/rules.d/75-net-description.rules
read rules file: /lib/udev/rules.d/75-probe_mtd.rules
[b]read rules file: /etc/udev/rules.d/75-toshiba-hdd-usb.rules[/b]
read rules file: /lib/udev/rules.d/75-tty-description.rules
read rules file: /lib/udev/rules.d/77-mm-cinterion-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-ericsson-mbm.rules
read rules file: /lib/udev/rules.d/77-mm-huawei-net-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-longcheer-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-mtk-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-nokia-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
read rules file: /lib/udev/rules.d/77-mm-platform-serial-whitelist.rules
read rules file: /lib/udev/rules.d/77-mm-simtech-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-telit-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-usb-device-blacklist.rules
read rules file: /lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
read rules file: /lib/udev/rules.d/77-mm-x22x-port-types.rules
read rules file: /lib/udev/rules.d/77-mm-zte-port-types.rules
read rules file: /lib/udev/rules.d/77-nm-olpc-mesh.rules
read rules file: /lib/udev/rules.d/78-sound-card.rules
read rules file: /lib/udev/rules.d/80-drivers.rules
read rules file: /lib/udev/rules.d/80-mm-candidate.rules
read rules file: /lib/udev/rules.d/80-net-name-slot.rules
read rules file: /lib/udev/rules.d/80-udisks2.rules
read rules file: /etc/udev/rules.d/90-alsa-tools-firmware.rules
read rules file: /lib/udev/rules.d/90-libgpod.rules
read rules file: /lib/udev/rules.d/90-pulseaudio.rules
read rules file: /etc/udev/rules.d/90-qemu-kvm.rules
read rules file: /lib/udev/rules.d/90-virtualbox.rules
read rules file: /lib/udev/rules.d/95-cd-devices.rules
read rules file: /lib/udev/rules.d/95-dm-notify.rules
read rules file: /lib/udev/rules.d/95-keyboard-force-release.rules
read rules file: /lib/udev/rules.d/95-keymap.rules
read rules file: /lib/udev/rules.d/95-udev-late.rules
read rules file: /lib/udev/rules.d/95-upower-battery-recall-dell.rules
read rules file: /lib/udev/rules.d/95-upower-battery-recall-fujitsu.rules
read rules file: /lib/udev/rules.d/95-upower-battery-recall-gateway.rules
read rules file: /lib/udev/rules.d/95-upower-battery-recall-ibm.rules
read rules file: /lib/udev/rules.d/95-upower-battery-recall-lenovo.rules
read rules file: /lib/udev/rules.d/95-upower-battery-recall-toshiba.rules
read rules file: /lib/udev/rules.d/95-upower-csr.rules
read rules file: /lib/udev/rules.d/95-upower-hid.rules
read rules file: /lib/udev/rules.d/95-upower-wup.rules
read rules file: /lib/udev/rules.d/96-cpufreq-simple.rules
read rules file: /lib/udev/rules.d/97-bluetooth-hid2hci.rules
read rules file: /etc/udev/rules.d/99-alt-udisks2-media-mount-point.rules
read rules file: /lib/udev/rules.d/99-bumblebee-nvidia-dev.rules
read rules file: /lib/udev/rules.d/99-gpusb.rules
read rules file: /lib/udev/rules.d/99-steam-controller-perms.rules
read rules file: /etc/udev/rules.d/99-x11-keyboard.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 38960 bytes strings
32541 strings (272998 bytes), 28813 de-duplicated (237767 bytes), 3729 trie nodes used
GROUP 6 /lib/udev/rules.d/50-udev-default.rules:49
IMPORT 'ata_id --export /dev/sdb' /lib/udev/rules.d/60-persistent-storage.rules:35
starting 'ata_id --export /dev/sdb'
'ata_id --export /dev/sdb' [8974] exit with return code 0
LINK 'disk/by-id/ata-TOSHIBA_MQ01ABB200_442WT1XKT' /lib/udev/rules.d/60-persistent-storage.rules:42
IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-storage.rules:55
LINK 'disk/by-path/pci-0000:00:1d.0-usb-0:1.1:1.0-scsi-0:0:0:0' /lib/udev/rules.d/60-persistent-storage.rules:56
IMPORT builtin 'blkid' /lib/udev/rules.d/60-persistent-storage.rules:70
probe /dev/sdb raid offset=0
LINK 'disk/by-id/wwn-0x5000039571f80677' /lib/udev/rules.d/60-persistent-storage.rules:80
PROGRAM '/sbin/multipath -c /dev/sdb' /lib/udev/rules.d/62-multipath.rules:12
starting '/sbin/multipath -c /dev/sdb'
'/sbin/multipath -c /dev/sdb' [8981] exit with return code 1
handling device node '/dev/sdb', devnum=b8:16, mode=0660, uid=0, gid=6
preserve permissions /dev/sdb, 060660, uid=0, gid=6
preserve already existing symlink '/dev/block/8:16' to '../sdb'
found 'b8:16' claiming '/run/udev/links/\x2fdisk\x2fby-id\x2fata-TOSHIBA_MQ01ABB200_442WT1XKT'
creating link '/dev/disk/by-id/ata-TOSHIBA_MQ01ABB200_442WT1XKT' to '/dev/sdb'
preserve already existing symlink '/dev/disk/by-id/ata-TOSHIBA_MQ01ABB200_442WT1XKT' to '../../sdb'
found 'b8:16' claiming '/run/udev/links/\x2fdisk\x2fby-id\x2fwwn-0x5000039571f80677'
creating link '/dev/disk/by-id/wwn-0x5000039571f80677' to '/dev/sdb'
preserve already existing symlink '/dev/disk/by-id/wwn-0x5000039571f80677' to '../../sdb'
found 'b8:16' claiming '/run/udev/links/\x2fdisk\x2fby-path\x2fpci-0000:00:1d.0-usb-0:1.1:1.0-scsi-0:0:0:0'
creating link '/dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.1:1.0-scsi-0:0:0:0' to '/dev/sdb'
preserve already existing symlink '/dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.1:1.0-scsi-0:0:0:0' to '../../sdb'
ACTION=add
DEVLINKS=/dev/disk/by-id/ata-TOSHIBA_MQ01ABB200_442WT1XKT /dev/disk/by-id/wwn-0x5000039571f80677 /dev/disk/by-path/pci-0000:00:1d.0-usb-0:1.1:1.0-scsi-0:0:0:0
DEVNAME=/dev/sdb
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host6/target6:0:0/6:0:0:0/block/sdb
DEVTYPE=disk
ID_ATA=1
ID_ATA_DOWNLOAD_MICROCODE=1
ID_ATA_FEATURE_SET_APM=1
ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=128
ID_ATA_FEATURE_SET_APM_ENABLED=1
ID_ATA_FEATURE_SET_HPA=1
ID_ATA_FEATURE_SET_HPA_ENABLED=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_ATA_FEATURE_SET_SECURITY=1
ID_ATA_FEATURE_SET_SECURITY_ENABLED=0
ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN=444
ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=444
ID_ATA_FEATURE_SET_SMART=1
ID_ATA_FEATURE_SET_SMART_ENABLED=1
ID_ATA_ROTATION_RATE_RPM=5400
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_ATA_SATA_SIGNAL_RATE_GEN2=1
ID_ATA_WRITE_CACHE=1
ID_ATA_WRITE_CACHE_ENABLED=1
ID_BUS=ata
ID_MODEL=TOSHIBA_MQ01ABB200
ID_MODEL_ENC=TOSHIBA\x20MQ01ABB200\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PART_TABLE_TYPE=dos
ID_PATH=pci-0000:00:1d.0-usb-0:1.1:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_1_1_0-scsi-0_0_0_0
ID_REVISION=AY000U
ID_SERIAL=TOSHIBA_MQ01ABB200_442WT1XKT
ID_SERIAL_SHORT=442WT1XKT
ID_TYPE=disk
ID_WWN=0x5000039571f80677
ID_WWN_WITH_EXTENSION=0x5000039571f80677
MAJOR=8
MINOR=16
MPATH_SBIN_PATH=/sbin
SUBSYSTEM=block
USEC_INITIALIZED=18555757
unload module index

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #7 : 25.04.2015 15:41:56 »
Ошибка в правиле.
ACTION!="add", SUBSYSTEM=="usb", SYSFS{idProduct}=="a00a", SYSFS{idVendor}=="0480", RUN+="/opt/rsyncz/rsync_hdd_koi1.sh"Если например создать кучу файлов и переподключить диск, то он не синхронизируется. А если из консоли выполнить
# udevadm trigger то все сразу синхронизируется.

То есть правило и скрипт работают, но запускаются не при подключении диска. Как сделать, чтоб при подключении выполнялся скрипт?
По идеи ACTION!="add" но чего не хочет.

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #8 : 25.04.2015 22:09:49 »
Как альтернатива поставил выполнение скрипта в действия устройств и воткнул зеркалирование, вроде работает.
Но хотелось бы с udev. Не могу понять почему не работает.
В последнем варианте SUBSYSTEM=="usb" оказалось не нужно.

ACTION!="add", SYSFS{idProduct}=="a00a", SYSFS{idVendor}=="0480", RUN+="/opt/rsyncz/rsync_hdd_koi1.sh"
« Последнее редактирование: 25.04.2015 22:12:16 от Koi »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 365
  • Учиться .... Телепатами не рождаются, ими ....
Re: Синхронизация rsync
« Ответ #9 : 25.04.2015 22:23:31 »
А если посмотреть вывод:

udevadm monitor

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #10 : 26.04.2015 10:27:35 »
Вроде ничего подозрительного.
# udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[518.270281] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1 (usb)
KERNEL[518.270448] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0 (usb)
KERNEL[518.270796] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8 (scsi)
KERNEL[518.270900] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/scsi_host/host8 (scsi_host)
UDEV  [518.298916] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1 (usb)
UDEV  [518.300464] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0 (usb)
UDEV  [518.301341] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8 (scsi)
UDEV  [518.302487] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/scsi_host/host8 (scsi_host)
KERNEL[519.273317] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0 (scsi)
KERNEL[519.273437] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0 (scsi)
KERNEL[519.273554] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/scsi_disk/8:0:0:0 (scsi_disk)
KERNEL[519.273636] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/scsi_device/8:0:0:0 (scsi_device)
KERNEL[519.273881] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/bsg/8:0:0:0 (bsg)
UDEV  [519.274821] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0 (scsi)
UDEV  [519.276024] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0 (scsi)
UDEV  [519.277263] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/scsi_disk/8:0:0:0 (scsi_disk)
UDEV  [519.277771] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/scsi_device/8:0:0:0 (scsi_device)
UDEV  [519.278285] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/bsg/8:0:0:0 (bsg)
KERNEL[523.300033] add      /devices/virtual/bdi/8:16 (bdi)
UDEV  [523.301627] add      /devices/virtual/bdi/8:16 (bdi)                                 
KERNEL[523.308501] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/block/sdb (block)                                                         
KERNEL[523.308558] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/block/sdb/sdb1 (block)                                                   
UDEV  [523.565547] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/block/sdb (block)                                                         
UDEV  [524.031065] add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host8/target8:0:0/8:0:0:0/block/sdb/sdb1 (block)

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Синхронизация rsync
« Ответ #11 : 27.04.2015 16:27:43 »
Переделал правило.
SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a00a", ACTION!="add", RUN+="rsyncusbhdd1.sh"Скрипт запихнул в usr/bin и так работает.
Почему-то из /opt работать не хочет.