[bash] skrypcik do synchronizacji

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
soulreaver1
Wytworny Kaczor
Wytworny Kaczor
Posty: 409
Rejestracja: 13 mar 2009, 10:03
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Lokalizacja: 127.0.0.1

[bash] skrypcik do synchronizacji

Post autor: soulreaver1 »

Witam.

Napisałem sobie prościutki skrypcik do synchronizacji plików mp3 komputera z telefonem.

Kod: Zaznacz cały

#!/bin/bash
rsync -vr --progress --stats --ignore-existing /home/work/mp3 /media/Storage/mp3
umount /media/3061-0800
umount /media/Storage
echo ""
echo "*** Zakończono synchronizację, można odłączyć urządzenie ***"
Dodatkowo chciałbym aby skrypt nie dopuszczał możliwości dublowania plików w /media/Storage/mp3 ,bez względu na to w jakim folderze się on znajduje. tzn.

plik znajduje się w /media/Storage/mp3/folder1/plik1.mp3 , to plik /media/Storage/mp3/folder2/plik1.mp3 nie powinien zostać zapisany na pamięci telefonu (powinien zostać zignorowany). Nie mam pomysłu na to... Czytałem man rsync-a i wydał mi się mało szczegółowy, nic nie znalazłem.
inny OS: FreeBSD 8.2, Linux Mint 12.
LukAs
Wytworny Kaczor
Wytworny Kaczor
Posty: 284
Rejestracja: 30 paź 2005, 21:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [bash] skrypcik do synchronizacji

Post autor: LukAs »

Nie chce mi się za Ciebie myśleć, ale użycie np. polecenia find i zrobienie z tego instrukcji sterującej powinno wystarczyć

Kod: Zaznacz cały

Pseudo kod
find zmienna
nie znalazłem podobnego pliku
kopiuje
end
A ja zrobiłbym to tak, że tworzyłbym sobie listę skopiowanych plików. Potem tą listę można łatwo wykorzystać.
Więcej o mnie znajdziesz na: http://ospulse.pl
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [bash] skrypcik do synchronizacji

Post autor: borzole »

* pierwsza faza to wyszukanie plików o tej samej wielkości
* druga faza to porównanie sum kontrolnych plików wyłapanych w pierwszej fazie
* porównanie jest dwustopniowe, bo porównanie rozmiarów to 90% pewności, a porównywanie sum jest czasochłonne.

* Jest już do tego program fslint i jest nie tylko graficzny, składa się z szeregu drobnych konsolowych narzędzi, więcej: man fslint
LukAs
Wytworny Kaczor
Wytworny Kaczor
Posty: 284
Rejestracja: 30 paź 2005, 21:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [bash] skrypcik do synchronizacji

Post autor: LukAs »

* pierwsza faza to wyszukanie plików o tej samej wielkości
@borzole, myślę, że dobrze byłoby jeszcze wykorzystać polecenie file z grep do przefiltrowania plików. Wiadomo, że nazwy utworów mogą się nieznacznie różnić, mogą mieć różną jakość, różny format, mogą to być remiksy, koncertowe nagrania itd. Da się też wyciągnąć z pliku długość ścieżki (length).

Kod: Zaznacz cały

lukas@Biuro:/media/mp3$ file -b * | grep Audio
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 160 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1,  48 kbps, 44.1 kHz, JntStereo

lukas@Biuro:/media/mp3$ file -b * | grep Audio | grep 192
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
Uwagi:
Polecenie file dostarcza dokładne informacje o plikach, a z opcją -b ukrywa nazwy plików.
Więcej o mnie znajdziesz na: http://ospulse.pl
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 69 gości