Posts Tagged ‘FTP’

Samstag, 11. Februar 2012

curlftps mit Zeichensatz-Problemen

Ich ziehe mir wöchentlich ein Backup eines produktiven Web-Servers auf meinen Testserver. Da Endbenutzer Dateien auf die Web-Site laden und Ordner erstellen können, gibt es dort mittlerweile auch Dateinamen mit Sonderzeichen wie äöü.

Die Kombination aus curlftps (zur Bereistellung eines FTP-Mounts welcher wie eine lokale Festplatte angesprochen werden kann, zu Gunsten von rsync, mit welchem ich nur neu hinzugekommene Dateien übertrage) hat nun aber zu Problemen bei der Darstellung der Dateien mit Sonderzeichen geführt. Anstelle des ä bei „Bräteln“ sah ich auf der Kommandozeile mit ls nur „Br?teln“.

Seit ich curlftps mit folgenden Optionen aufrufe, klappt es auch mit der korrekten Übertragung der Dateinamen mit Sonderzeichen:

/usr/bin/curlftpfs -o codepage=latin1 -o iocharset=utf8 -r -s 'server.tld' '/mnt/ftpBackup/server.tld'

Damit wird tarsnap hoffentlich auch nicht mehr mit folgenden Fehlermeldungen auffallen:

...
tarsnap: var/www/sites/server.tld/Bilder/T�ftelwettbewerb/: Can't translate pathname 'var/www/sites/server.tld/Bilder/T�ftelwettbewerb/' to UTF-8
...

Übrigens: Meine locale-Einstellungen schauen folgender massen aus:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 13. November 2011

Rekursives chmod von Dateien in einem Web-Verzeichnis mittels FTP-Kommandozeile

Weil der mit Mac OS X mitgelieferte Kommandozeilenclient ftp Dateiberechtigungen nicht rekursiv anpassen kann, wird lftp benötigt:

$ sudo port install lftp

Nach der Installation öffnet man folgendermassen die FTP-Verbindung zum betreffenden Server:

$ lftp
lftp :~> open emeidi.com
lftp emeidi.com:~> user benutzer passwort
lftp benutzer@emeidi.com:~> ls
...

Nachdem man sich in das entsprechende Verzeichnis durchgehangelt hat, reich ein

lftp benutzer@emeidi.com:~> chmod -R 777 .

aus, um die Anpassungen vorzunehmen. Da der entsprechende Ordner fast 10’000 Dateien enthielt, kam jedes GUI ins stottern — der Kommandozeilenclient verrichtete seine Arbeit wie erwartet rasch und ohne Komplikationen.

Tags: , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 26. Dezember 2010

Netgear ReadyNAS Duo mit eigener FTP-Backuproutine sichern

Die Gründe hinter einem solchen Vorhaben können vielfältig sein — aber wer will es einem Linux-Hacker verübeln, wenn er sich des in einem ReadyNAS Duo werkelnde (aber völlig veraltete) Debian GNU/Linux‘ bemächtigen will?

Pakete nachinstallieren

Von der ReadyNAS-Web-Site lädt man sich zwei Binärpakete herunter, die mit der Installation über die Web-Oberfläche des Gerätes a) den Root-Zugang und b) apt-get nachrüsten:

Tipps

  • Falls die Download-Links nicht mehr funktionieren, schaut man am Besten unter Add-ons for RAIDiator 4.1.3+ nach. Klappt dieser Link auch nicht, hangelt man sich über die Web-Site via
    Support > Downloads > ReadyNAS Add-Ons > Add-ons for RAIDiator 4.1.3+
    durch.
  • Das Root-Passwort entspricht dem Administrator-Passwort, welches man zum Login auf der Web-Oberfläche verwendet.

lftp nachrüsten

Für das Backup der lokal auf dem NAS gespeicherten Daten auf einen entfernten FTP-Server habe ich mich für das Tool lftp entschieden:

# apt-get install lftp

Backup-Script einrichten

Damit man die Datensicherung automatisieren kann, sollte man unter /usr/local/bin/backup-emeidi.sh folgendes Script ablegen und gemäss seinen eigenem Gutdünken anpassen:

#!/bin/bash    

HOST="www.host.tld"
USER="user"
PASS="pass"
LCD="/c/"
RCD="/"

echo "---------------------------------------------------------------------"
echo "Backing up $LCD to $HOST/backup$RCD with user $USER"
echo "---------------------------------------------------------------------"
echo `date`
echo "---------------------------------------------------------------------"

lftp -c "
open ftp://$USER:$PASS@$HOST; 
lcd $LCD;
cd $RCD;
mirror --reverse \
       --verbose \
       --no-perms \
       --no-umask \
       --ignore-time"

echo "---------------------------------------------------------------------"
echo "Backup finished."
echo "---------------------------------------------------------------------"
echo `date`
echo "---------------------------------------------------------------------"
echo ""

exit 0

Die Variable LCD speichert das lokale Verzeichnis, die Variable RCD das entfernte (auf dem FTP-Server liegende) Verzeichnis.

Am Ende macht man das Script mittels folgendem Befehl ausführbar:

# chmod 755 /usr/local/bin/backup-emeidi.sh

Cron-Job einrichten

Damit das Script nun täglich einmal mitten in der Nacht ausgeführt wird, erstellt man sich unter /etc/cron.d/backup-emeidi einen entsprechenden Cron-Job:

...
0 1     * * *   root    /usr/local/bin/backup-emeidi.sh | mail -s "Backup ReadyNAS" -c syslog@server.tld syslog@customer.tld
...

Dieser Cron-Job wird täglich um 1 Uhr morgens gestartet und mailt das Ergebnis an syslog@customer.tld wie auch an syslog@server.tld. So kann der Sysadmin, wie auch der Kunde, täglich die Ergebnisse des Backuplaufes überprüfen.

Problem

Bei meinem Kunden werden lustigerweise gewisse Dateien in jeder Nacht gebackupt, obwohl diese nachweislich nicht verändert wurden. Ich vermute hier einen Bug in lftp.

Tags: , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen