יום שני, נובמבר 16, 2009

גיבוי אוטומטי בעזרת udev rule

הבעיה:
גיבוי מרוחק חצי אוטומטי ונח.
האמצעים:
* 2 כוננים חיצוניים 1.5TB בחיבור firewire 400
* שרת לינוקס
* אוטו
* בית מרוחק ממקום העבודה
השיטה:
הגדרת udev rule שמזהה את חיבור הכונן החיצוני ומעתיק אליו מידע. בסיום ההעתקה, שליחת מייל על מנת להזכיר לאדם אחראי לקחת את הכונן הביתה.

udev rule:

KERNEL=="sd?1", ATTRS{model}=="FreeAgent XTreme", ACTION=="add", SYMLINK+="offsite", RUN+="/backup/offsite.sh"


את הכלל צריך להעתיק לקובץ ולשים אותו בספרייה /etc/udev/rules.d עם סיומת rules - למשל
/etc/udev/rules.d/backup.rules

הסבר לכלל:
* נוצר התקן שהשם שלו הוא כמו sd?1 למשל sdc1 וגם
* להתקן או אחד מהאבות שלו יש תכונה ATTRS{model} בשם "FreeAgent XTreme" וגם
* הפעולה שעושה ההתקן היא הוספה
אם כל התנאים הללו נכונים, אז ניצור קישור לקובץ ההתקן בשם /dev/offsite כדי שנוכל להשתמש בשם הזה בתסריט גיבוי שלנו ונריץ את תסריט הגיבוי.

את התכונות של ההתקן והאבות שלו מקבלים על ידי הרצת הפקודה udevinfo -a -p /sys/block/sdc1
פרטים נוספים אפשר למצוא כאן.

תסריט גיבוי:

#!/bin/sh

DEV_NAME=/dev/offsite
MOUNT_NAME=/mnt/offsite
DIR_TO_BACKUP=/backup
MAILTO=foo@bar

err()
{
echo "$1" | mail -s "offsite backup error" $MAILTO
exit
}

mount -t xfs $DEV_NAME $MOUNT_NAME || err "Couldn't mount the backup harddrive with error $?"
rsync -az $DIR_TO_BACKUP $MOUNT_NAME || err "rsync command failed with error $?"
umount $MOUNT_NAME || err "Couldn't unmount the backup harddrive with error $?"

echo "backup succeded" | mail -s "offsite backup - take me home!" $MAILTO

העברת קבצים עם שמות בעברית ממחשב לינוקס למחשב חלונות

טיפ בנושא העברת קבצים עם שמות בעברית ממחשב לינוקס למחשב חלונות. הטיפ נכון גם לגבי שפות אחרות.

השיטה הנוחה והמהירה להעביר קבצים רבים ממחשב למחשב או אפילו באותו מחשב ממקום למקום היא על ידי שימוש בrsync. בדרך כלל rsync מותקן מראש בהפצות לינוקס שונות. במחשב חלונות הדרך הפשוטה היא להתקין cygwin עם חבילת rsync.
הבעיה היא שcygwin לא תומך בutf-8 ולכן שמות הקבצים העבריים על מחשב החלונות הופכים להיות מוזרים.
על מנת להתגבר על הבעיה, יש להוריד cygwin dll תומך בutf-8 מהאתר הבא:
http://www.okisoft.co.jp/esc/utf8-cygwin ולהחליף את הdll המקורי cygwin1.dll.