Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Witam, poszukuję potrzebnego mi skryptu do Ubuntu 11.04, za pomocą którego po podłączeniu Pena USB wszystkie zapisane na nim pliki zostaną skopiowane na dysk do odpowiedniego katalogu. Musi się to odbyć bez jakiejkolwiek ingerencji, automatycznie po wykryciu pendrive. Jestem początkujący w linuxie i liczę na wyrozumiałość i pomoc.
Stanisław P.

Stanisław P. Software designer

Temat: Automatyczne kopiowanie zawartości USB na HDD

Poczytaj o udev'ie:
http://wiki.debian.org/udev
http://reactivated.net/writing_udev_rules.html

Jeśli założysz odpowiednie triggery to możesz w nich po prostu wywołać cp, rsync, czy co innego potrzebujesz.
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Dzięki za sugestię, ale przekraczają one znacznie moje możliwości. Jeśli to nie problem to prosiłbym raczej o gotowca. Przekopałem internet i niestety nie znalazłem nic działającego, a bardzo mi potrzebny ten skrypt.

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

Tu masz gotowca:
http://ubuntuforums.org/showthread.php?t=1648939
Nie zwalnia Cię to jednak od edycji plików zgodnie z regułą CO chcesz zrobić a nie 'copy&paste'. Ale wyjaśnione łopatologicznie.

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

reasumując w Twoim przypadku będzie potrzebne stworzenie pliczku w katalogu /etc/udev/rules.d, np, o nazwie "85-usb.conf".

W tym pliczku musisz umieścić następującej treści:
ACTION=="add",SUBSYSTEMS=="usb", KERNEL=="sd?", NAME="synchronizacja", RUN+="/home/mariusz/.skrypty/syncusb.sh"


Gdzie w /home/mariusz/.skrypty/syncusb.sh:

#!/bin/sh
mountdir="/media/`blkid /dev/sdb1 | awk {'print $2'} | sed -e 's/UUID=//' -e 's/"//g'`"
dstdir="/home/mariusz/BACKUP/`date +%Y%m%d-%H_%M`"
mkdir $dstdir
cp -r $mountdir $dstdir


Oczywiście to trywialne rozwiązanie, które działa, ale może lepiej. Możesz swoją regułkę dostosować tylko do jednego pendriva (vendor, serial) i nie robić "backupu" pendriva, a jedynie synchronizacje:


mountdir="/media/`blkid /dev/sdb1 | awk {'print $2'} | sed -e 's/UUID=//' -e 's/"//g'`"
dstdir="/home/mariusz/BACKUP/pen"
rsync $mountdir $dstdir


Oczywiście założyłem, że zawsze Twój pen to sdb1, co może nie być prawdą (to też możesz sobie zautomatyzować ;)). Możesz też nie badać za każdym razem ściezki mountowania pen'a, bo możesz ją określić na sztywno.
Na koniec:
/etc/init.d/udev reload
Mariusz Derela edytował(a) ten post dnia 22.08.11 o godzinie 08:20
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Bardzo dziekuje kolego Mariuszu, to jest instrukcja na moje mozliwosci. Zrobilem wszystko zgodnie z zachowaniem moich sciezek i nazwy uzytkownika.Jednak po probie przeladowania dostaje komunikat :
art@ART:~$ /etc/init.d/udev reload
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service udev reload

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the reload(8) utility, e.g. reload udev
reload: Operacja niedozwolona

Dane nie sa kopiowane, rowniez po restarcie systemu nic sie nie zmienia.

Syslog pokazuje takie info
Aug 22 15:20:07 ART kernel: [ 1703.800049] usb 1-4: new high speed USB device using ehci_hcd and address 5
Aug 22 15:20:07 ART kernel: [ 1703.941228] scsi4 : usb-storage 1-4:1.0
Aug 22 15:20:08 ART kernel: [ 1704.940851] scsi 4:0:0:0: Direct-Access Intuix DiskOnKey 6.51 PQ: 0 ANSI: 0 CCS
Aug 22 15:20:08 ART kernel: [ 1704.949728] sd 4:0:0:0: Attached scsi generic sg1 type 0
Aug 22 15:20:08 ART kernel: [ 1704.949949] sd 4:0:0:0: [sdb] 3903487 512-byte logical blocks: (1.99 GB/1.86 GiB)
Aug 22 15:20:08 ART kernel: [ 1704.950457] sd 4:0:0:0: [sdb] Write Protect is off
Aug 22 15:20:08 ART kernel: [ 1704.950475] sd 4:0:0:0: [sdb] Mode Sense: 45 00 00 08
Aug 22 15:20:08 ART kernel: [ 1704.950488] sd 4:0:0:0: [sdb] Assuming drive cache: write through
Aug 22 15:20:08 ART kernel: [ 1704.952827] sd 4:0:0:0: [sdb] Assuming drive cache: write through
Aug 22 15:20:08 ART kernel: [ 1704.953868] sdb: sdb1
Aug 22 15:20:08 ART kernel: [ 1704.958213] sd 4:0:0:0: [sdb] Assuming drive cache: write through
Aug 22 15:20:08 ART kernel: [ 1704.958233] sd 4:0:0:0: [sdb] Attached SCSI removable disk
Aug 22 15:20:08 ART udevd-work[1703]: kernel-provided name 'sdb' and NAME= 'synchronizacja' disagree, please use SYMLINK+= or change the kernel to provide the proper name
Aug 22 15:20:08 ART udevd-work[1715]: exec of program '/home/art/bin/syncusb.sh' failed
Jesli mozna to prosze o dalsze wskazowki.Jarosław Raszewski edytował(a) ten post dnia 22.08.11 o godzinie 15:31

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

Jarosław Raszewski:
Bardzo dziekuje kolego Mariuszu, to jest instrukcja na moje mozliwosci. Zrobilem wszystko zgodnie z zachowaniem moich sciezek i nazwy uzytkownika.Jednak po probie przeladowania dostaje komunikat :
art@ART:~$ /etc/init.d/udev reload
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service udev reload

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the reload(8) utility, e.g. reload udev
reload: Operacja niedozwolona

Dane nie sa kopiowane, rowniez po restarcie systemu nic sie nie zmienia.
Jesli mozna to prosze o dalsze wskazowki.
Zamień słowo "reload" na "restart"
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Dzieki Marcinie, zmienilem
Efekt:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service udev restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop udev ; start udev. The restart(8) utility is also available.
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.45" (uid=1000 pid=1806 comm="stop udev ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init"))

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

brak uprawnień. Dodaj 'sudo'.
sudo /etc/init.d/udev restart

BTW. sprawdź później sobie skrypt uruchamiając go ręcznie - pisany tu troszkę ad hoc :)Mariusz Derela edytował(a) ten post dnia 22.08.11 o godzinie 15:45
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Mariusz Derela:
brak uprawnień. Dodaj 'sudo'.
sudo /etc/init.d/udev restart

BTW. sprawdź później sobie skrypt uruchamiając go ręcznie - pisany tu troszkę ad hoc :)


teraz chyba poszlo:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service udev restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop udev ; start udev. The restart(8) utility is also available.
udev stop/waiting
udev start/running, process 2019

Skrypt uruchomiony recznie dziala i kopiuje tam gdzie chcialem, Pozostaje tylko zmusic system zeby robil to sam po wpieciu pena :) Jarosław Raszewski edytował(a) ten post dnia 22.08.11 o godzinie 16:20

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

poszło więc testuj z pen'em :)
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Mariusz Derela:
poszło więc testuj z pen'em :)

Cos jest nie tak, po wlozeniu pena daje w logu takie info:
Aug 22 16:22:28 ART udevd-work[2200]: kernel-provided name 'sdb' and NAME= 'synchronizacja' disagree, please use SYMLINK+= or change the kernel to provide the proper name
Aug 22 16:22:28 ART udevd-work[2212]: exec of program '/home/art/bin/syncusb.sh' failed

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

chwilowo nie mam jak sprawdzić (jestem "mobilny":)), ale z logu wynika, żeby zamienić NAME= na SYMLINK+=

Spróbuj :)

BTW> nie podoba mi się nazwa zwrócona w LOG'u odnośnie zmiennej KERNEL. Powinno być KERNEL="sd?" lub KERNEL="sd?1" lub bez wyrazenia regularnego KERNEL="sdb1". Mariusz Derela edytował(a) ten post dnia 22.08.11 o godzinie 17:04
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Mariusz Derela:
chwilowo nie mam jak sprawdzić (jestem "mobilny":)), ale z logu wynika, żeby zamienić NAME= na SYMLINK+=

Spróbuj :)

BTW> nie podoba mi się nazwa zwrócona w LOG'u odnośnie zmiennej KERNEL. Powinno być KERNEL="sd?" lub KERNEL="sd?1"

A czy plik nie powinien sie nazywac 85-usb.rules ??

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

Thats right ;)

Niemniej i tak skoro w logach się pojawia informacja to znaczy, że Twoją regułę przeczytał.
Zdefiniuj poprawną wartość dla KERNEL= lub zamień NAME= na SYMLINK+=Mariusz Derela edytował(a) ten post dnia 22.08.11 o godzinie 17:20
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Mariusz Derela:
Thats right ;)

Niemniej i tak skoro w logach się pojawia informacja to znaczy, że Twoją regułę przeczytał.
Zdefiniuj poprawną wartość dla KERNEL= lub zamień NAME= na SYMLINK+=

Dalem tak:
ACTION=="add",SUBSYSTEMS=="usb", KERNEL=="sd?1", SYMLINK+="synchronizacja", RUN+="/home/art/bin/syncusb.sh"

log pokazuje:
Aug 22 17:19:59 ART kernel: [ 8895.792065] usb 1-4: new high speed USB device using ehci_hcd and address 15
Aug 22 17:19:59 ART kernel: [ 8895.933645] scsi14 : usb-storage 1-4:1.0
Aug 22 17:20:00 ART kernel: [ 8896.933042] scsi 14:0:0:0: Direct-Access Intuix DiskOnKey 6.51 PQ: 0 ANSI: 0 CCS
Aug 22 17:20:00 ART kernel: [ 8896.942426] sd 14:0:0:0: Attached scsi generic sg1 type 0
Aug 22 17:20:00 ART kernel: [ 8896.942865] sd 14:0:0:0: [sdb] 3903487 512-byte logical blocks: (1.99 GB/1.86 GiB)
Aug 22 17:20:00 ART kernel: [ 8896.943521] sd 14:0:0:0: [sdb] Write Protect is off
Aug 22 17:20:00 ART kernel: [ 8896.943540] sd 14:0:0:0: [sdb] Mode Sense: 45 00 00 08
Aug 22 17:20:00 ART kernel: [ 8896.943553] sd 14:0:0:0: [sdb] Assuming drive cache: write through
Aug 22 17:20:00 ART kernel: [ 8896.945994] sd 14:0:0:0: [sdb] Assuming drive cache: write through
Aug 22 17:20:00 ART kernel: [ 8896.947056] sdb: sdb1
Aug 22 17:20:00 ART kernel: [ 8896.950509] sd 14:0:0:0: [sdb] Assuming drive cache: write through
Aug 22 17:20:00 ART kernel: [ 8896.950528] sd 14:0:0:0: [sdb] Attached SCSI removable disk
Aug 22 17:20:01 ART udevd-work[2871]: exec of program '/home/art/bin/syncusb.sh' failed

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

sudo chmod +x /home/art/bin/syncusb.sh
Jarosław Raszewski

Jarosław Raszewski Działalność
Gospodarcza -
Doradztwo Biznesowe

Temat: Automatyczne kopiowanie zawartości USB na HDD

Marcin Bojko:
sudo chmod +x /home/art/bin/syncusb.sh

Po wykonaniu nic sie nie dzieje, a po recznym uruchomieniu skryptu tworzy katalog oznaczony data ale nie kopiuje plikow
"art@ART:~$ sudo sh /home/art/bin/syncusb.sh
cp: nie można wykonać stat na `/media/SEC_TYPE=msdos': Nie ma takiego pliku ani katalogu"

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

Zaraz, znajdę Ubuntu i sprawdzę.

// Poprawna zawartość skryptu:

#!/bin/sh
mountdir="/media/`blkid /dev/sdb1 | awk {'print $2'} | sed -e 's/LABEL=//' -e 's/"//g'`"
dstdir="/home/mariusz/BACKUP/`date +%Y%m%d-%H_%M`"
mkdir -p $dstdir
cp -r $mountdir $dstdir

//uruchamiałem z palca a nie z udevsa ale skrypt działa.
// proste, nie eleganckie, ale działa.Marcin Bojko edytował(a) ten post dnia 22.08.11 o godzinie 19:06

konto usunięte

Temat: Automatyczne kopiowanie zawartości USB na HDD

dokładnie, skoro zmieniła się NAME na SYMLINK to trzeba nieco poprawić skrypcik tak jak Pan Marcin to zrobił :)

BTW> wiem, że nieeleganckie - ale chciałem, żeby było jasne (autor wątku chciał żeby rozwiązanie było zrozumiałe :))Mariusz Derela edytował(a) ten post dnia 23.08.11 o godzinie 08:09

Następna dyskusja:

stos USB na systemy wbudowane




Wyślij zaproszenie do