• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Bestimmte Files aus 2 unterschiedl. Verzeichnissen Syncen

Hi zusammen!
Ich schreibe gerade an einem Bash-Script zum syncronisieren von Dateien auf einem FTP mit meinem lokalen Rechner.

Hier mal der Rohentwurf:

Code:
#!/bin/bash
PROG=`smart --gui`
RSYNC_FLAGS="-4HPSa --stats --progress --delete-after --delete-excluded "

if ( test -d $HOME/KernelUpdate );
then
clear
echo ""
echo "Verzeichnis KernelUpdate ist vorhanden."
echo ""
echo "Es wird geprüft ob updates vorhanden sind...!"
kdialog --passivepopup "Es wird geprüft ob updates vorhanden sind...!"
echo ""
rsync $RSYNC_FLAGS \
	rsync://ftp-1.gwdg.de/pub/opensuse/factory/repo/oss/suse/i586/ \
	"$HOME/KernelUpdate/Daten" --filter=merge\ <(cat <<-EOF
		+ acpi*.i586.rpm
		+ kernel-pae*.i586.rpm
		+ kernel-source*.i586.rpm
		+ kernel-syms*.i586.rpm
		+ acx-*.i586.rpm
		+ appleir-*.i586.rpm
		+ aufs-*.i586.rpm
		+ ndiswrapper-*.i586.rpm
		+ omnibook-*.i586.rpm
		+ pcfclock-*.i586.rpm
		+ quickcam-*.i586.rpm
		+ wacom-*.i586.rpm
		+ libusb-*.i586.rpm
		+ lirc-*.rpm
		+ dazuko-*.rpm
		+ ivtv-*.i586.rpm
		- *
		EOF
	)|grep "Number of files transferred: 0";

if [ $? -ne 0 ]
then
clear
echo "Updates wurden aktualisiert!!!"
kdialog --msgbox "Updates wurden aktualisiert!!!"
sleep 1

if kdialog --yesno "Soll SMART gestartet werden?"
then
echo ""
echo "SMART wird gestartet......"
echo ""
kdesu $PROG
exit 1
fi

else
echo ""
echo "Keine Updates vorhanden !!!" >&2
kdialog --passivepopup "Keine Updates vorhanden !!!"
echo ""
exit 1
fi

else
clear
mkdir -p $HOME/KernelUpdate/Daten
clear
echo "Verzeichnis KernelUpdate wurde in $HOME angelegt!!!"
echo "Updates werden heruntergeladen....."
kdialog --passivepopup "Updates werden heruntergeladen....."
echo ""
rsync $RSYNC_FLAGS \
	rsync://ftp-1.gwdg.de/pub/opensuse/factory/repo/oss/suse/i586/ \
	"$HOME/KernelUpdate/Daten" --filter=merge\ <(cat <<-EOF
		+ acpi*.i586.rpm
		+ kernel-pae*.i586.rpm
		+ kernel-source*.i586.rpm
		+ kernel-syms*.i586.rpm
		+ acx-*.i586.rpm
		+ appleir-*.i586.rpm
		+ aufs-*.i586.rpm
		+ ndiswrapper-*.i586.rpm
		+ omnibook-*.i586.rpm
		+ pcfclock-*.i586.rpm
		+ quickcam-*.i586.rpm
		+ wacom-*.i586.rpm
		+ libusb-*.i586.rpm
		+ lirc-*.rpm
		+ dazuko-*.rpm
		+ ivtv-*.i586.rpm
		- *
		EOF
	)|grep "Number of files transferred: 0";

echo ""
echo "Updates wurden herundergeladen!!!"
kdialog --passivepopup
sleep 1
if kdialog --yesno "Soll SMART gestartet werden?"
then
echo ""
echo "SMART wird gestartet......"
echo ""
kdesu $PROG
else
echo ""
echo "Keine Updates vorhanden !!!" >&2
kdialog --passivepopup "Keine Updates vorhanden !!!"
echo ""
exit 1
fi
fi

Jetzt soll aber dieses Script nicht nur bestimmte Files aus dem i586-Verzeichnis syncen sondern auch aus noarch-Verzeichnis.
Wie mach ich das am besten. Mehrere Ansätze von mir haben nicht geklappt.

Also nochmals zur Erklärung. Dieses Script soll ( falls noch nicht vorhanden ) ein Verzeichnis lokal anlegen und soll vordefinierte Dateien aus dem FTP-Verzeichnis i586 und noarch ind das erstellte Verzeichnis lokal runterladen.Sollte das Verzeichnis schon bestehen dann soll es prüfen ob die Dateien auf dem FTP aktueller sind als die lokalen. Wenn ja dann soll er sie synchronisieren. Danach soll das Script fragen ob Smart gestartet werden soll oder nicht und wenn ja dann soll das Smart-Gui ausgeführt werden.


Vielleicht hat ja jemand von euch nen guten Vorschlag wie ich dieses Problem angehen könnte!

Gruß
Johnny
 
Mein Vorschlag wäre das Du dir mal rsync anschaust. Das macht nämlich genau das was Du da vorhast. Wenn Du was Eigenes machen möchtest, schau dir doch den Quelltext an, da findest Du bestimmt Anregungen.
 
Der Quelltext ist ja von mir aber mich würde interessieren wie ich bei rsync 2 verschieden Verzeichnispfade angeben kann die er dann synct
 

Wizzzard

Member
Code:
rsync -av <quellverzeichnis> <pfad zu Zielverzeichnis das gleichen Namen enthält wie das Quellverzeichnis>
also z.B.
Code:
rsync -av /home/user /backup
synchronisert /home/user mit /backup/user und erstellt bei Bedarf /backup/user wenn es noch nicht existiert.

Code:
rsync -av <inhalt von quellverzeichnis>/ <pfad zu Zielverzeichns das gleichen Inhalt haben soll>

also z.B.
Code:
rsync -av /home/user/ /backup/user
synchronisiert den Inhalt von Verzeichnis /home/user mit dem Inhalt von /backup/user.

Es ist ein Unterschied ob man bei der Quelle einen Slash hinter dem Verzeichnisnamen angibt oder nicht.

Ansonsten schau Dir die man-Page an.
 
Oben