Autor: Adam Kucza o 9. luty 2007
Oddaję do użytku skrypt mojego autorstwa napisany w php, wykonujący kopię synchronizacyjną plików znajdujących się w katalogu podanym jako pierwszy parametr wywołania.
#! /usr/local/bin/php -f
# by Adam Kucza (c) 2007
<?
$x = $_SERVER["argv"];
if (count($x)==4)
{
//print_r($x);
$rsync = „/usr/local/bin/rsync”;
$srv = $x[1];
$src = $x[2];
$dst = $x[3];
$t = getdate();
//print_r($t);
if (strlen($t['mon'])<10) $t['mon']="0".$t['mon'];
if (strlen($t['mday'])<10) $t['mday']="0".$t['mday'];
$l = "/var/log/rsync/".$x[1]."_".$t['year']."-".$t['mon']."-".$t['mday']."_".$t['hours'].".".$t['minutes'].".".$t['seconds'];
$o = "";
$o .= "-a ";
$o .= "-v ";
$o .= "-z ";
$o .= "–delete ";
$o .= "–ignore-errors ";
$o .= "–force ";
$o .= "–stats ";
$o .= "–log-file=".$l." ";
//$o .= "–dry-run ";
//$o .= "–modify-window=1 ";
//$o .= "–iconv=UTF-8,CP1251 ";
//$o .= "–blocking-io ";
//$o .= "–delete-after ";
//$o .= "–delete-before ";
//$o .= "–progress ";
//$o .= "–delete-excluded ";
//$o .= "–exclude-from=$EXCLUDES ";
//$o .= "–backup –backup-dir=/$BACKUPDIR -a ";
$z = $rsync." ".$o." ".$src." ".$srv."::".$dst;
echo $z."\n";
system($z);
}
else
{
echo "\nusage: ".$x[0]." server_address source_folder destination_module\n";
echo "\nexample: ".$x[0]." 192.168.1.100 /home/user/ backup_module\n";
}
echo "\n";
?>
Przykład jego wywołania wygląda np. tak:
./rsync.php /home/users/ backup_server
enjoy!
» wpis obejrzano 6948 razy przez 1960 internautów «
Napisany w Systemy, freeBSD, rsync | 1 Komentarz »
Autor: Adam Kucza o 9. luty 2007
Postanowiłem przybliżyć nieco problem związany z rsync.
Podczas synchronizacji widać oraz w logach widzimy błędy identyczne do następujących
[3193] rsync: readlink „jakis_plik” (in intranet) failed: Bad file descriptor (9)
[3193] rsync: recv_generator: failed to stat „jakis_plik” (in intranet): Bad file descriptor (9)
[3197] rsync: stat „jakis_plik” (in intranet) failed: Bad file descriptor (9)
[3197] rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]
Czasami nie zawsze pojawiają się tego typu błędy, aczkolwiek administrator widząc readlink … Bad file descriptor (9) zastanawia się czy przypadkiem nie ma uszkodzonego dysku i czy nie jest to błąd odczytu pliku…
W pewnym sensie jest to prawda, bowiem przy konfigurowaniu rsynca należy pamiętać aby system plików (filesystem type) na obu serwerach, a dokładniej na partycjach (źródłowej i docelowej) był dokładnie taki sam.
Mój problem polegał na tym, że zamontowana partycja na serwerze źródłowym posiadała likuksowy system plików ext2fs (subtype=131), a partycja, a raczej rsyncowy moduł docelowy - system plików freebsd (subtype=165).
Stąd te błędy. Korekte systemu plików mozna zrobić „w locie” bez konieczności restartowania serwera, a co ważniejsze - utraty danych (przynajmniej u mnie wszystko pozostało bez zmian).
Dla pewności proponowałbym zrobić uprzednio kopię zapasową danych znajdujących się na partycji, której chcemy zmienić system plików -> przezorny zawsze ubezpieczony.
Zmianę systemu plików dokonujemy następująco:
sysinstall -> configure -> fdisk
Po zamianie ext2fs -> freebsd, wszystko śmiga jak należy i zapominamy o błędach typu bad file descriptor.
» wpis obejrzano 5782 razy przez 1743 internautów «
Napisany w Systemy, freeBSD, rsync | Brak komentarzy »