diff -u --recursive --new-file fsbackup-1.2/cfg_example fsbackup-1.2pl1/cfg_example
--- fsbackup-1.2/cfg_example	2001-12-29 14:41:49 +0500
+++ fsbackup-1.2pl1/cfg_example	2003-04-03 19:05:37 +0600
@@ -123,6 +123,16 @@
 $cfg_remote_login = "backup_login";
 $cfg_remote_path = "/home/backup_login/backup";
 
+#-------------------
+# FTP transfer mode. If set to a non-zero value then all data transfers will 
+# be done using passive mode. This is not usually required except for some dumb
+# servers, and some firewall configurations.
+# òÅÖÉÍ ÓÏÅÄÉÎÅÎÉÑ Ó FTP ÓÅÒ×ÅÒÏÍ (ÐÁÓÓÉ×ÎÙÊ ÉÌÉ ÁËÔÉ×ÎÙÊ).
+# 0 - Active ÒÅÖÉÍ.
+# 1 - Passive ÒÅÖÉÍ (ÄÌÑ ÓÐÅÃÉÆÉÞÎÙÈ ftp ÓÅÒ×ÅÒÏ× ÉÌÉ ÏÓÏÂÙÈ ÎÁÓÔÒÏÅË ÆÁÅÒ×ÏÌÏ×).
+#-------------------
+
+$cfg_remote_ftp_mode = 0;
 
 #-------------------
 # Password of remote login for remote_ftp storage type.
@@ -135,9 +145,11 @@
 #-------------------
 # Path of directory to store backup on local file system for local storage type.
 # ðÁÒÁÍÅÔÒÙ ÎÅÏÂÈÏÄÉÍÙÅ ÄÌÑ ÈÒÁÎÅÎÉÑ ÂÜËÁÐÁ ÎÁ ÌÏËÁÌØÎÏÊ æó:
+# âÜËÁÐ ÎÅ ÄÏÌÖÅÎ ÂÙÔØ × ÏÄÎÏÊ ÄÉÒÅËÔÏÒÉÉ Ó ËÜÛÅÍ. óÏÚÄÁÊÔÅ ÏÔÄÅÌØÎÕÀ ÄÉÒÅËÔÏÒÉÀ, 
+# ÎÁÐÒÉÍÅÒ, archive.
 #-------------------
 
-$cfg_local_path = "/usr/local/fsbackup/cache";
+$cfg_local_path = "/usr/local/fsbackup/archive";
 
 
 #-------------------
diff -u --recursive --new-file fsbackup-1.2/CHANGES fsbackup-1.2pl1/CHANGES
--- fsbackup-1.2/CHANGES	2002-05-16 19:33:39 +0600
+++ fsbackup-1.2pl1/CHANGES	2005-01-14 15:10:25 +0500
@@ -1,3 +1,35 @@
+Major changes between version 1.2 and 1.2pl1
+--------------------------------------------
+* óËÒÉÐÔ pgsql_backup.sh ÍÏÄÉÆÉÃÉÒÏ×ÁÎ ÄÌÑ ÐÏÄÄÅÒÖËÉ ÂÜËÁÐÁ Ó ÉÓËÌÀÞÅÎÉÅÍ
+  ÔÁÂÌÉÃ ÄÌÑ ÐÏÓÌÅÄÎÉÈ ×ÅÒÓÉÊ PostgreSQL (ÉÚÍÅÎÉÌÓÑ ÆÏÒÍÁÔ ×Ù×ÏÄÁ ËÏÍÁÎÄÙ \d).
+
+* ðÁÔÞ ÏÔ Ignacio Alles <ignacioalles@fibertel.com.ar>:
+  ÅÓÌÉ ÎÅ ÏÐÒÅÄÅÌÅÎÏ ÓÉÍ×ÏÌØÎÏÅ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ É ÇÒÕÐÐÙ - ÐÉÛÅÍ × ÆÁÊÌ
+  ×ÏÓÓÏÚÄÁÎÉÑ ÄÅÒÅ×Á ÄÉÒÅËÔÏÒÉÊ ÃÉÆÒÏ×ÏÅ.
+
+* 'list' ÆÁÊÌ ÔÅÐÅÒØ ÄÏÐÏÌÎÉÔÅÌØÎÏ ÓÏÚÄÁÅÔÓÑ ÄÌÑ ËÁÖÄÏÇÏ ÔÏÍÁ ÁÒÈÉ×Á,
+  ÞÔÏÂÙ ÐÏÓÍÏÔÒÅÔØ × ËÁËÏÍ ÉÍÅÎÎÏ ÔÏÍÅ ÎÁÈÏÄÉÔÓÑ ÉÓËÏÍÙÊ ÆÁÊÌ.
+
+* ÷ ×ÙÚÏ×Å find ÚÁÍÅÎÅÎ ÏÐÅÒÁÔÏÒ -not ÎÁ !, ÔÁË ËÁË ÎÅËÏÔÏÒÙÅ ×ÅÒÓÉÉ find ÎÅ
+  ×ÏÓÐÒÉÎÉÍÁÀÔ ËÏÎÓÔÒÕËÃÉÉ Ó "-not".
+
+* ÷ pgsql_backup.sh ÚÁËÏÍÍÅÎÔÉÒÏ×ÁÎ ×ÙÚÏ× pg_dumpall -s ÄÌÑ ÏÔÄÅÌØÎÏÇÏ ÓÏÚÄÁÎÉÑ
+  ÓÈÅÍÙ ÄÁÎÎÙÈ, ÔÁË ËÁË × PostgreSQL 7.3 ËÌÀÞ "-s" ÄÌÑ pg_dumpall ÂÙÌ ÕÂÒÁÎ.
+
+* ÷×ÅÄÅÎÁ ÐÅÒÅÍÅÎÎÁÑ ËÏÎÆÉÇÕÒÁÃÉÉ $cfg_remote_ftp_mode ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÒÅÖÉÍÁ 
+  ÓÏÅÄÉÎÅÎÉÑ Ó FTP ÓÅÒ×ÅÒÏÍ (ÐÁÓÓÉ×ÎÙÊ ÉÌÉ ÁËÔÉ×ÎÙÊ). îÅËÏÔÏÒÙÅ ftp ÓÅÒ×ÅÒÁ
+  ÉÌÉ ÎÁÓÔÒÏÊËÉ ÆÁÅÒ×ÏÌÁ ÎÅ ÐÏÚ×ÏÌÑÀÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÁËÔÉ×ÎÙÊ ÒÅÖÉÍ FTP ÓÏÅÄÉÎÅÎÉÑ,
+  ÐÒÉÍÅÎÑÅÍÙÊ ÒÁÎÅÅ ÐÏ ÕÍÏÌÞÁÎÉÀ.
+
+* éÓÐÒÁ×ÌÅÎÏ ÎÅÐÒÁ×ÉÌØÎÏÅ ÔÏÌËÏ×ÁÎÉÅ ÄÉÒÅËÔÉ×Ù $cfg_root_path, fsbackup ÔÅÐÅÒØ
+  ÒÁÂÏÔÁÅÔ ÎÅ Ó ÁÂÓÏÌÀÔÎÙÍÉ ÐÕÔÑÍÉ ÏÔÎÏÓÉÔÅÌØÎÏ /, Á ÔÏÌØËÏ Ó ÏÔÎÏÓÉÔÅÌØÎÙÍÉ ÐÕÔÑÍÉ
+  ÏÔÎÏÓÉÔÅÌØÎÏ $cfg_root_path.
+
+* ÷ fsrestore.sh Ë ÐÁÒÁÍÅÔÒÁÍ tar ÄÏÂÁ×ÌÅÎ ËÌÀÞ "-p", ÄÌÑ ÂÏÌÅÅ ÐÒÁ×ÉÌØÎÏÇÏ
+  ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÐÒÁ× ÄÏÓÔÕÐÁ.
+
+* íÏÄÕÌØ sqlite_backup.sh ÄÌÑ ÂÜËÁÐÁ SQLite ÔÁÂÌÉÃ. 
+
 Major changes between version 1.1pl2 and 1.2
 --------------------------------------------
 * éÓÐÒÁ×ÌÅÎÁ ÎÅÄÏÒÁÂÏÔËÁ ÐÒÉ ÂÜËÁÐÅ ÓÉÍ×ÏÌÉÞÅÓËÉÈ ÓÓÙÌÏË, ÅÓÌÉ ÉÓÐÏÌØÚÕÀÔÓÑ 
@@ -73,4 +105,4 @@
   ÒÏÔÁÃÉÅÊ ÉÌÉ ÚÁÍÅÎÏÊ ÔÅËÕÝÅÇÏ ÎÅÉÎËÒÅÍÅÎÔÁÌØÎÏÇÏ ÂÜËÁÐÁ ÎÏ×ÏÊ ×ÅÒÓÉÅÊ. óÔÁÒÁÑ 
   ×ÅÒÓÉÑ ÐÏÍÅÝÁÅÔÓÑ × ÐÏÄËÁÔÁÌÏÇ OLD. ($cfg_save_old_backup × ËÏÎÆ. ÆÁÊÌÅ);
 
-* äÏÂÁ×ÌÅÎ FAQ Ó ÏÔ×ÅÔÁÍÉ ÎÁ ÎÁÉÂÏÌÅÅ ÞÁÓÔÏÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ.
+* äÏÂÁ×ÌÅÎ FAQ Ó ÏÔ×ÅÔÁÍÉ ÎÁ ÎÁÉÂÏÌÅÅ ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ.
diff -u --recursive --new-file fsbackup-1.2/create_backup.sh fsbackup-1.2pl1/create_backup.sh
--- fsbackup-1.2/create_backup.sh	2002-01-08 11:26:02 +0500
+++ fsbackup-1.2pl1/create_backup.sh	2005-01-14 15:57:21 +0500
@@ -7,7 +7,7 @@
 #
 # ðÒÉÍÅÒ ÓÔÒÏËÉ ÄÌÑ crontab:
 #
-#18 4 * * * /usr/local/fsbackup/create_backup.sh| mail -s"`name -n` backup report" root
+#18 4 * * * /usr/local/fsbackup/create_backup.sh| mail -s "`uname -n` backup report" root
 
 #--------------------------------------
 # Path where fsbackup installed.
@@ -49,6 +49,14 @@
 
 backup_pgsql=0
 
+#--------------------------------------
+# 1 - run sqlite_backup.sh script (you need edit sqlite_backup.sh first!), 0 - not run.
+# æÌÁÇ ÂÜËÁÐÁ SQLite ÔÁÂÌÉÃ, ÚÁÐÕÓËÁÅÔÓÑ ÔÒÅÂÕÀÝÉÊ ÐÒÅÄ×ÁÒÉÔÅÌØÎÏÊ ÎÁÓÔÒÏÊËÉ
+# ÓËÒÉÐÔ ./scripts/sqlite_backup.sh, 1 - ÚÁÐÕÓËÁÔØ, 0 - ÎÅ ÚÁÐÕÓËÁÔØ. 
+#--------------------------------------
+
+backup_sqlite=0
+
 
 #--------------------------------------
 # 1 - run sysbackup.sh script (you need edit sysbackup.sh first!), 0 - not run.
@@ -76,6 +84,11 @@
     ./scripts/pgsql_backup.sh 
 fi
 
+# óÏÈÒÁÎÑÅÍ SQLite ÂÁÚÙ
+if [ $backup_sqlite -eq 1 ]; then
+    ./scripts/sqlite_backup.sh 
+fi
+
 # óÏÈÒÁÎÑÅÍ ÓÉÓÔÅÍÎÙÅ ÐÁÒÁÍÅÔÒÙ
 if [ $backup_sys -eq 1 ]; then
     ./scripts/sysbackup.sh
@@ -83,7 +96,7 @@
 
 # âÜËÁÐ.
 for cur_conf in $config_files; do
-    nice -19 ./fsbackup.pl ./$cur_conf
+    ./fsbackup.pl ./$cur_conf
     next_iter=`echo "$config_files"| grep "$cur_conf "`
     if [ -n "$next_iter" ]; then
 	sleep 600 # úÁÓÙÐÁÅÍ ÎÁ 10 ÍÉÎÕÔ, ÄÁÅÍ ÐÒÏÃÅÓÓÏÒÕ ÏÓÔÙÔØ :-)
diff -u --recursive --new-file fsbackup-1.2/FAQ fsbackup-1.2pl1/FAQ
--- fsbackup-1.2/FAQ	2002-05-16 17:35:11 +0600
+++ fsbackup-1.2pl1/FAQ	2004-11-02 11:14:13 +0500
@@ -131,4 +131,97 @@
       ÅÖÅÎÅÄÅÌØÎÏÅ ÄÕÂÌÉÒÏ×ÁÎÉÅ ÒÅÚÅÒ×ÎÏÊ ËÏÐÉÉ ÎÁ ÂÜËÁÐ-ÓÅÒ×ÅÒÅ ÎÁ 
       ÓÏÓÅÄÎÉÊ ÄÉÓË (ÒÅÚÅÒ×ÉÒÏ×ÁÎÉÅ ÂÜËÁÐÁ).
     
-    
\ ÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ
+-------------------------------------------------------------------------------
+ðÏÞÅÍÕ ÐÒÉ ÓÏÚÄÁÎÅÎÉÉ ÂÜËÁÐÁ ÐÏ FTP ÓËÒÉÐÔ ÂÜËÁÐÁ "ÚÁ×ÉÓÁÅÔ" ÉÌÉ ×Ù×ÁÌÉ×ÁÅÔÓÑ ÐÏ 
+ÔÁÊÍÁÕÔÕ ? FTP ÓÅÒ×ÅÒ (windows, nowell netware) ÎÁ ÐÅÒ×ÙÊ ×ÚÇÌÑÄ ÒÁÂÏÔÁÅÔ.
+  
+  îÅËÏÔÏÒÙÅ ftp ÓÒÅ×ÅÒÁ ÉÌÉ ÎÁÓÔÒÏÊËÉ ÆÁÅÒ×ÏÌÁ ÎÅ ÐÏÚ×ÏÌÑÀÔ ÉÓÐÏÌØÚÏ×ÁÔØ 
+  ÁËÔÉ×ÎÙÊ ÒÅÖÉÍ FTP ÓÏÅÄÉÎÅÎÉÑ, ÐÒÉÍÅÎÑÅÍÙÊ ÐÏ ÕÍÏÌÞÁÎÉÀ. õÓÔÁÎÏ×ÉÔÅ
+  $cfg_remote_ftp_mode=1 × ÆÁÊÌÅ ËÏÎÆÉÇÕÒÁÃÉÉ.
+
+-------------------------------------------------------------------------------
+îÅ ÐÏÌÕÞÁÅÔÓÑ ÓÏÚÄÁÔØ ÂÜËÁÐ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ pgp-ÛÉÆÒÏ×ÁÎÉÑ.
+îÁ ÕÄÁÌÅÎÎÏÊ É ÌÏËÁÌØÎÏÊ ÍÁÛÉÎÅ ÓÏÚÄÁÌ\ÜËÓÐÏÒÔÉÒÏ×ÁÌ\ÉÍÐÏÒÔÉÒÏ×ÁÌ ËÌÀÞÉ ÔÁË,
+ËÁË ÎÁÐÉÓÁÎÏ × README ÎÁ ÌÏËÁÌØÎÏÊ ÍÁÛÉÎÅ (Ó ËÏÔÏÒÏÊ ÓÌÉ×ÁÅÔÓÑ ÂÜËÁÐ)
+gpg --list-secret-key ×ÙÄÁÅÔ:
+  pub  1024D/06E192F6 2002-08-20 Aleksey
+  sub  1024g/C3750174 2002-08-20
+á ËÏÇÄÁ ÚÁÐÕÓËÁÀ fsbackup ËÁÒÔÉÎÁ ÓÌÅÄÕÀÝÁÑ:
+  PGP: enabled
+  ......
+  gpg: backup: skipped: public key not found
+  gpg: [stdin]: encryption failed: public key not found
+ 
+
+   óÕÄÑ ÐÏ ×ÓÅÍÕ ×ÁÛ ËÌÀÞ ÎÁÚ×ÁÎ "Aleksey", Á × ÆÁÊÌÅ ËÏÎÆÉÇÕÒÁÃÉÉ 
+   (ÄÉÒÅËÔÉ×Á ËÏÎÆÉÇÕÒÁÃÉÉ $cfg_pgp_userid) × ËÁÞÅÓÔ×Å ÉÍÅÎÉ ÐÕÂÌÉÞÎÏÇÏ ËÌÀÞÁ 
+   ÕËÁÚÁÎ "backup". åÝÅ ÏÄÎÁ ÞÁÓÔÁÑ ÏÛÉÂËÁ - ÚÁÂÙ×ÁÀÔ ÚÁ×ÅÒÉÔØ ÐÕÂÌÉÞÎÙÊ ËÌÀÞ 
+   (ÐÏÄÐÉÓÁÔØ, gpg --sign-key) ÎÁ ÍÁÛÉÎÅ ÇÄÅ ÐÒÏÉÚ×ÏÄÉÔÓÑ ÂÜËÁÐ.
+   
+-------------------------------------------------------------------------------
+ëÁË ÐÏÓÍÏÔÒÅÔØ ÒÁÚÍÅÒ ÆÁÊÌÏ× É ÁÔÒÉÂÕÔÏ× ÐÏÍÅÝÅÎÎÙÈ × ÁÒÈÉ× ? 
+áÒÈÉ× ÐÏÌÕÞÉÌÓÑ ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ, ÎÕÖÎÏ ×ÙÑÓÎÉÔØ ÉÚ-ÚÁ ËÁËÏÇÏ ÆÁÊÌÁ ÔÁË ×ÙÒÏÓ
+ÒÁÚÍÅÒ.
+
+   db_dump .hash
+   db_dump185 .hash
+   db2_dump .hash
+
+-------------------------------------------------------------------------------
+ðÏÞÅÍÕ × ÁÒÈÉ× ÎÅ ÐÏÍÅÝÁÀÔÓÑ ÆÁÊÌÙ ÐÒÉÍÏÎÔÉÒÏ×ÁÎÎÙÈ ÞÅÒÅÚ samba ÄÉÓËÏ×.
+   
+  $File::Find::dont_use_nlink = 1;   
+
+
+-------------------------------------------------------------------------------
+íÏÖÎÏ ÌÉ ÒÅÁÌÉÚÏ×ÁÔØ ÞÅÒÅÚ fsbackup ÁÒÈÉ× ÆÁÊÌÏ× ËÏÎÆÉÇÕÒÁÃÉÉ. ô.Å. ÂÜËÁÐÉÔØ ÎÅ 
+ÒÁÚ × ÄÅÎØ, Á ÄÏÐÕÓÔÉÍ ÐÒÏ×ÅÒÑÔØ ÒÁÚ × 5 ÍÉÎÕÔ É ÅÓÌÉ ÅÓÔØ ÉÚÍÅÎÅÎÉÑ ÄÅÌÁÔØ 
+ÂÜËÁÐ ÏÔÒÁÖÁÑ × ÉÍÅÎÉ ÆÁÊÌÁ ×ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ, × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÎÉÞÅÇÏ ÎÅ ÔÒÏÇÁÔØ ?
+
+    îÁÓÔÒÏÊÔÅ ÒÁÂÏÔÕ × ÒÅÖÉÍÅ ÉÎËÒÅÍÅÎÔÁÌØÎÏÇÏ ÂÜËÁÐÁ É ÕËÁÖÉÔÅ ÚÁ×ÅÄÏÍÏ ÂÏÌØÛÏÅ
+    ÞÉÓÌÏ ÉÔÅÒÁÃÉÊ (ÎÁÐÒÉÍÅÒ, $cfg_increment_level=99999).
+    fsbackup, ÅÓÌÉ ÎÅÔ ÉÚÍÅÎÅÎÉÊ ÐÏ ÓÒÁ×ÎÅÎÉÀ Ó ÐÒÏÛÌÙÍ ÉÎËÒÅÍÅÎÔÏÍ, ÓÒÕÇÁÅÔÓÑ, 
+    ÞÔÏ ÂÜËÁÐÉÔØ ÎÅÞÅÇÏ É ÎÅ ÂÕÄÅÔ ÓÏÚÄÁ×ÁÔØ ÌÉÛÎÉÈ ÆÁÊÌÏ×.
+
+
+-------------------------------------------------------------------------------
+åÓÌÉ ÚÁÄÁÔØ ÂÜËÁÐ ÐÏ /, ÂÕÄÕÔ ÌÉ ÐÏÍÅÝÅÎÙ × ÂÜËÁÐ ×ÓÅ ÐÒÉÍÏÎÔÉÒÏ×ÁÎÎÙÅ 
+ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ ?
+
+    îÅÔ, ÎÕÖÎÏ ÐÅÒÅÞÉÓÌÉÔØ × ËÏÎÆÉÇÕÒÁÃÉÉ ×ÓÅ ÔÏÞËÉ ÍÏÎÉÔÒÏ×ÁÎÉÑ.
+
+-------------------------------------------------------------------------------
+îÁ ÏÄÎÏÊ ÍÁÛÉÎÅ ÎÅ×ÏÚÍÏÖÎÏ ÚÁËÁÞÁÔØ ÐÏ FTP ÁÒÈÉ× (ÒÁÚÂÉÔÙÊ ÎÁ ÔÏÍÁ ÐÏ 800íÂ)
+ÓÕÍÍÁÒÎÙÍ ÒÁÚÍÅÒÏÍ ÂÏÌØÛÅ 2 çÂ.
+
+    ïÂÎÏ×ÉÔÅ ×ÅÒÓÉÀ perl ÍÏÄÕÌÑ Net::FTP.
+
+
+-------------------------------------------------------------------------------
+ðÏÞÅÍÕ ÆÁÊÌ Ó ÉÍÅÎÅÍ /tmp/test/c:\trace_b.txt ÎÅ ÐÏÍÅÝÁÅÔÓÑ × ÁÒÈÉ×, ÐÉÛÅÔ:
+/bin/tar: tmp/test/c\:\trace_b.txt: Cannot stat: No such file or direct
+
+    âÏÀÓØ, ÞÔÏ Ó ÜÔÉÍ ÔÒÕÄÎÏ ÂÏÒÏÔØÓÑ, \t ×ÐÏÌÎÅ ÒÅÚÏÎÎÏ ÍÏÖÅÔ ÂÙÔØ ×ÏÓÐÒÉÎÑÔ ËÁË
+    ÔÁÂÕÌÑÃÉÑ. óÐÉÓÏË ÆÁÊÌÏ× × tar ÐÅÒÅÄÁÅÔÓÑ ËÁË ÅÓÔØ, ÂÅÚ ÜËÒÁÎÉÒÏ×ÁÎÉÑ, É ÕÖÅ ÓÁÍ
+    tar ÒÁÚÂÉÒÁÑ ÆÁÊÌ ÓÏ ÓÐÉÓËÏÍ ÐÒÉÎÉÍÁÅÔ ÒÅÛÅÎÉÅ ÏÂ ÜËÒÁÎÉÒÏ×ÁÎÉÉ ÐÒÉ ÐÏÍÅÝÅÎÉÉ ×
+    ÁÒÈÉ× (ÞÔÏ ×ÉÄÎÏ ÎÁ ÐÒÉÍÅÒÅ ÜËÒÁÎÉÒÏ×ÁÎÉÑ ":"). 
+
+    îÕÖÎÏ ÐÏÞÉÔÁÔØ ÓÐÅÃÉÆÉËÁÃÉÀ ÎÁ ÔÉÐ ÉÓÐÏÌØÚÕÅÍÏÊ ×ÁÍÉ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ, ×ÐÏÌÎÅ
+    ×ÅÒÏÑÔÎÏ, ÞÔÏ ÓÉÍÐÏÌ \ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÝÚÏ×ÁÎ × ÉÍÅÎÉ ÆÁÊÌÁ.
+         
+
+
+-------------------------------------------------------------------------------
+fsbackup × ÓÒÁ×ÎÅÎÉÉ Ó BackupPC ? 
+
+    îÁÓËÏÌØËÏ Ñ ÐÏÎÉÍÁÀ, ÜÔÏ ÐÒÏÄÕËÔÙ ÄÌÑ ÒÁÚÎÙÈ ÚÁÄÁÞ. úÁÄÁÞÁ fsbackup
+    - ÏÒÇÁÎÉÚÏ×ÁÔØ ÂÜËÁÐ ÔÏÌØËÏ ×ÙÂÏÒÏÞÎÙÈ ÄÁÎÎÙÈ (ÇÉÂËÏÓÔØ ÚÁÄÁÎÉÅ
+    ÍÁÓÏË) ÉÓÐÏÌØÚÕÑ ftp ÉÌÉ ssh, Á BackupPC - ×ÅÄÅÎÉÅ ÐÏÌÎÏÇÏ ÁÒÈÉ×Á
+    (ÐÒÅÖÄÅ ×ÓÅÇÏ windows ÍÁÛÉÎ) ÎÁ backup ÓÅÒ×ÅÒÅ ÎÁ ËÏÔÏÒÏÍ
+    ÕÓÔÁÎÏ×ÌÅÎÏ ÓÐÅÃÉÁÌØÎÏÅ ÓÅÒ×ÅÒÎÏÅ ðï. äÌÑ Web-ÉÎÔÅÒÆÅÊÓÁ BackupPC
+    ÎÕÖÅÎ suidperl, ÞÔÏ ÎÅ ÂÅÚÏÐÁÓÎÏ. é ÇÌÁ×ÎÏÅ:  fsbackup ÒÁÂÏÔÁÅÔ ÎÁ
+    ÓÔÏÒÏÎÅ ËÌÉÅÎÔÁ (ÏÔÐÒÁ×ËÁ Ó ËÌÉÅÎÔÁ ÎÁ ÓÅÒ×ÅÒ ÂÜËÁÐÁ), Á  BackupPC
+    ÎÁ ÓÔÏÒÏÎÅ ÓÅÒ×ÅÒÁ (ÓÅÒ×ÅÒ ÉÎÉÃÉÉÒÕÅÔ ÐÒÏÃÅÓÓ ÂÜËÁÐÁ, ÎÁ ËÌÉÅÎÔÅ
+    ÓÏÆÔ ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ (rsync ÉÌÉ  tar ÞÅÒÅÚ ssh/rsh/nfs), Ô.Å.
+    ÐÏÌÕÞÉ× ÄÏÕÓÔÐ Ë ÓÅÒ×ÅÒÕ ÂÜËÁÐÁ - Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÌÕÞÁÅÔ ÐÏÌÎÙÊ
+    ÄÏÓÔÕÐ ËÏ ×ÓÅÍ ËÌÉÅÎÔÁÍ).
diff -u --recursive --new-file fsbackup-1.2/fsbackup.pl fsbackup-1.2pl1/fsbackup.pl
--- fsbackup-1.2/fsbackup.pl	2002-05-16 17:35:11 +0600
+++ fsbackup-1.2pl1/fsbackup.pl	2004-05-24 13:13:46 +0600
@@ -85,7 +85,11 @@
 $cfg_size_limit *= 1024;	 # ëÉÌÏÂÁÊÔÙ × ÂÁÊÔÙ.
 $cfg_maximum_archive_size *= 1024;	 # ëÉÌÏÂÁÊÔÙ × ÂÁÊÔÙ.
 
-chdir($cfg_root_path);
+if (-d $cfg_root_path){
+    chdir($cfg_root_path);
+} else {
+    die "Invalid \$cfg_root_path path ($cfg_root_path)\n";
+}
 
 if ($ARGV[0] eq "-h"){
     $cfg_backup_style = "hash";
@@ -113,6 +117,9 @@
     die "Unknown backup_style:\$cfg_backup_style=$cfg_backup_style\n";
 }
 
+if ($cfg_remote_ftp_mode != 1){
+    $cfg_remote_ftp_mode = 0;
+}
 
 if ($cfg_backup_style eq "full_backup" || $cfg_backup_style eq "hash"){
     $cfg_new_flag=1;
@@ -244,6 +251,10 @@
 open (LIST, ">$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.list")|| print "Can't create list file ($cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.list).\n";
 flock (LIST, 2);
 
+# óÐÉÓÏË Ó ÕËÁÚÁÎÉÅÍ ÒÁÚÍÅÒÏ× ÆÁÊÌÏ×.
+open (LIST_SIZE, ">$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.lsize")|| print "Can't create list file ($cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.lsize).\n";
+flock (LIST_SIZE, 2);
+
 # óÏÚÄÁÅÍ ÓÐÉÓÏË ÄÉÒÅËÔÏÒÉÊ × ÁÒÈÉ×Å.
 open (DIRS, ">$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.dir")|| print "Can't create list file ($cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.dir).\n";
 flock (DIRS, 2);
@@ -278,7 +289,11 @@
 	next;
 
     } elsif ($cur_path =~ /[\/\w]+/) {		#  /dir[/file]
-	push @fs_path, $cur_path;
+	 if ($cur_path =~ /^$cfg_root_path/){
+	     push @fs_path, "$cur_path";
+	 } else {
+	    push @fs_path, "$cfg_root_path$cur_path";
+	 }
 
     } else {
 	print STDERR "Syntax error: $cur_path, ingnored.\n" if ($cfg_verbose >= &VERB_ALL);
@@ -292,9 +307,11 @@
 foreach $cur_pathitem (@fs_path){
     print "Adding $cur_pathitem....\n" if ($cfg_verbose == &VERB_ALL);
     find (\&add_to_backup, $cur_pathitem);
+    chdir($cfg_root_path); # ðÅÒÅÈÏÄÉÍ × ËÏÒÅÎØ, ÔÁË ËÁË find ÄÅÌÁÅÔ chdir.
     print "done\n" if ($cfg_verbose == &VERB_ALL);
 }
 close (LIST);
+close (LIST_SIZE);
 close (DIRS);
 #------------
 # óÏÓÔÁ×ÌÑÅÍ ÓÐÉÓÏË ÕÄÁÌÅÎÎÙÈ ÆÁÊÌÏ×.
@@ -316,7 +333,6 @@
 untie %active_hash_new;
 untie %active_hash_last;
 
-chdir ("/"); # ðÅÒÅÈÏÄÉÍ × ËÏÒÅÎØ, ÔÁË ËÁË ×ÓÅ ÐÕÔÉ Õ ÎÁÓ ÂÅÚ ËÏÒÎÅ×ÏÇÏ /
 
 # áËÔÉ×ÉÒÕÅÍ FTP ÓÏÅÄÉÎÅÎÉÅ ×ÔÏÒÏÊ ÒÁÚ.
 ftp_connect();
@@ -349,8 +365,8 @@
     print "Storing local backup...\n" if ($cfg_verbose == &VERB_ALL);
     if ($cfg_backup_style eq "sync"){
 	if ($cfg_clean_flag == 1){ # õÄÁÌÉÔØ ÓÔÁÒÙÅ ËÏÐÉÉ
-	    print "WARNING: If you really shure to delete $cfg_local_path before sync operatioun uncomment line 'system( \"find \$cfg_local_path -not -path '\$cfg_local_path' -maxdepth 1 -exec \$prog_rm -rf \{\} \\;\");'" if ($cfg_verbose >= &VERB_ALL);
-#    	    system( "find $cfg_local_path -not -path '$cfg_local_path' -maxdepth 1 -exec $prog_rm -rf \{\} \\;");
+	    print "WARNING: If you really shure to delete $cfg_local_path before sync operatioun uncomment line 'system( \"find \$cfg_local_path ! -path '\$cfg_local_path' -maxdepth 1 -exec \$prog_rm -rf \{\} \\;\");'" if ($cfg_verbose >= &VERB_ALL);
+#    	    system( "find $cfg_local_path ! -path '$cfg_local_path' -maxdepth 1 -exec $prog_rm -rf \{\} \\;");
 	}
 
 	system( "cd $cfg_local_path; sh $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.del");
@@ -372,6 +388,7 @@
 	    }
 	}
 	system( "cp -f $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.list $cfg_local_path/$backup_file_base.list") == 0 || print "Local FS .list copy failed: $?\n";
+	system( "cp -f $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.lsize $cfg_local_path/$backup_file_base.lsize") == 0 || print "Local FS .lsize copy failed: $?\n";
 	system( "cp -f $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.dir $cfg_local_path/$backup_file_base.dir") == 0 || print "Local FS .dir copy failed: $?\n";
 	system( "cp -f $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.del $cfg_local_path/$backup_file_base.del") == 0 || print "Local FS .del copy failed: $?\n";
 	system( "cp -f $cfg_cache_dir/$cfg_backup_name/.hash $cfg_local_path/$backup_file_base.hash") == 0 || print "Local FS .hash copy failed: $?\n";
@@ -386,7 +403,7 @@
     print "Storing remote ssh backup...\n" if ($cfg_verbose == &VERB_ALL);
     if ($cfg_backup_style eq "sync"){
 	if ($cfg_clean_flag == 1){ # õÄÁÌÉÔØ ÓÔÁÒÙÅ ËÏÐÉÉ
-	    system( "$prog_ssh -l $cfg_remote_login $cfg_remote_host find $cfg_remote_path -not -path '$cfg_remote_path' -maxdepth 1 -exec rm -rf \{\} \\;");
+	    system( "$prog_ssh -l $cfg_remote_login $cfg_remote_host find $cfg_remote_path ! -path '$cfg_remote_path' -maxdepth 1 -exec rm -rf \{\} \\;");
 	}
 	system( "cat $cfg_cache_dir/$cfg_backup_name/.hash | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/.hash'") == 0 || print "SSH connection failed (store .hash): $?\n";
 	system( "cat $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.del | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/.del'") == 0 || print "SSH connection failed (store .hash): $?\n";
@@ -418,6 +435,7 @@
 	    }
 	}
 	system( "cat $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.list | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/$backup_file_base.list'") == 0 || print "SSH connection failed (copy .list): $?\n";
+	system( "cat $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.lsize | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/$backup_file_base.lsize'") == 0 || print "SSH connection failed (copy .lsize): $?\n";
 	system( "cat $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.dir | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/$backup_file_base.dir'") == 0 || print "SSH connection failed (copy .dir): $?\n";
         system( "cat $cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.del | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/$backup_file_base.del'") == 0 || print "SSH connection failed (copy .del): $?\n";
         system( "cat $cfg_cache_dir/$cfg_backup_name/.hash | $prog_ssh -l $cfg_remote_login $cfg_remote_host 'cat - > $cfg_remote_path/$backup_file_base.hash'") == 0 || print "SSH connection failed (copy .hash): $?\n";
@@ -458,6 +476,8 @@
 	}
 	$ftp->delete("$backup_file_base.list");
 	$ftp->put("$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.list", "$backup_file_base.list") || print "Can't PUT .list file to remote FTP server\n";
+	$ftp->delete("$backup_file_base.lsize");
+	$ftp->put("$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.lsize", "$backup_file_base.lsize") || print "Can't PUT .lsize file to remote FTP server\n";
 	$ftp->delete("$backup_file_base.dir");
 	$ftp->put("$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.dir", "$backup_file_base.dir")|| print "Can't PUT .dir file to remote FTP server\n";
 	$ftp->delete("$backup_file_base.del");
@@ -468,7 +488,18 @@
 	$ftp->put("$cfg_cache_dir/$cfg_backup_name/.hash", ".hash")|| print "Can't PUT new .hash file to remote FTP server\n";
 	# ïÂÒÁÂÁÔÙ×ÁÅÍ ÒÁÚÂÉÅÎÉÅ ÎÁ ÔÏÍÁ
 	for ($arc_block_level=0; $arc_block_level <= $#volume_position; $arc_block_level++){
+	
+# 	    # ðÒÏÂÌÅÍÁ ÂÙÌÁ × ÍÏÄÕÌÅ Net::FTP
+#	    if ($arc_block_level > 0){
+#		# ðÅÒÅÏÔËÔÙ×ÁÅÍ ftp ÓÅÓÓÉÀ, ÄÌÑ ÏÂÈÏÄÁ ÐÒÏÂÌÅÍÙ '2Gb'
+#		$ftp->quit;
+#		sleep(5);
+#		ftp_connect();
+#	    }
+
 	    my $tmp_list_file = crate_tmp_list($arc_block_level, $volume_position[$arc_block_level], $volume_position[$arc_block_level+1], "$cfg_cache_dir/$cfg_backup_name/$cfg_backup_name.list");
+	    $ftp->delete("$backup_file_base-$arc_block_level.list");
+	    $ftp->put("$tmp_list_file", "$backup_file_base-$arc_block_level.list") || print "Can't PUT .list file to remote FTP server\n";
 	    $ftp->delete("$backup_file_base-$arc_block_level.tar${arc_ext}");
 	    open (TAR,"$prog_tar -c -f - -T $tmp_list_file $prog_gzip_filter $prog_pgp_filter|")|| print "tar failed: $?\n";
     	    flock(TAR,1);
@@ -494,18 +525,19 @@
   $file_name  = $_;
   $file_fullpath  = $File::Find::name;
   $file_dir  = $File::Find::dir;
+  $file_fullpath =~ s/^$cfg_root_path/\.\//;
   my $file_fullpath_esc = $file_fullpath;
   $file_fullpath_esc =~ s/\'/\'\\\'\'/g;
 
   # óÏÚÄÁÅÍ ÓÐÉÓÏË ÄÉÒÅËÔÏÒÉÊ
-  if ((-d $file_fullpath) && (! -l $file_fullpath)){
+  if ((-d "$cfg_root_path/$file_fullpath") && (! -l "$cfg_root_path/$file_fullpath")){
       if (check_path($file_dir, $file_name) == 1){
 	if ($cfg_backup_style ne "hash"){
-	   ($tmp, $tmp, $stat_mode, $tmp, $stat_uid, $stat_gid, $tmp, $stat_size, $tmp, $stat_mtime, $stat_time) = stat($file_fullpath);
+	   ($tmp, $tmp, $stat_mode, $tmp, $stat_uid, $stat_gid, $tmp, $stat_size, $tmp, $stat_mtime, $stat_time) = stat("$cfg_root_path/$file_fullpath");
 	    $stat_mode = sprintf ("%04o", $stat_mode & 07777);
 	    $file_fullpath_esc =~ s/^\/(.*)$/$1/;
-	    $stat_uid = getpwuid($stat_uid);
-	    $stat_gid = getgrgid($stat_gid);
+	    $stat_uid = getpwuid($stat_uid) || $stat_uid;
+	    $stat_gid = getgrgid($stat_gid) || $stat_gid;
 	    my ($sec,$min,$hour,$mday,$mon,$year) = localtime($stat_time);
 	    $stat_time = sprintf ("%4.4d%2.2d%2.2d%2.2d%2.2d.%2.2d",
 		                   $year+1900,$mon+1,$mday,$hour,$min,$sec);
@@ -529,9 +561,9 @@
 	  }
       }
   # òÁÂÏÔÁÅÍ Ó ÆÁÊÌÁÍÉ
-  } elsif ((-f $file_fullpath) || (-l $file_fullpath)){
+  } elsif ((-f "$cfg_root_path/$file_fullpath") || (-l "$cfg_root_path/$file_fullpath")){
       if (check_path($file_dir, $file_name) == 1){
-	  ($tmp, $tmp, $stat_mode, $tmp, $stat_uid, $stat_gid, $tmp, $stat_size, $tmp, $stat_mtime) = stat($file_fullpath);
+	  ($tmp, $tmp, $stat_mode, $tmp, $stat_uid, $stat_gid, $tmp, $stat_size, $tmp, $stat_mtime) = stat("$cfg_root_path/$file_fullpath");
 	      $checksum_stat= md5_base64("$stat_mtime/$stat_size/$stat_mode/$stat_uid/$stat_gid");
 	      # $file_fullpath_md5 = md5_base64($file_fullpath);
 	      $file_fullpath_md5 = $file_fullpath;
@@ -544,8 +576,8 @@
 	      next;
 	  }
 
-	  if (($cfg_checksum eq "md5") && (! -l $file_fullpath)){
-	      ($md5_checksum_stat, $tmp) = split(/\s+/, `$prog_md5sum '$file_fullpath_esc'`);
+	  if (($cfg_checksum eq "md5") && (! -l "$cfg_root_path/$file_fullpath")){
+	      ($md5_checksum_stat, $tmp) = split(/\s+/, `$prog_md5sum '$cfg_root_path/$file_fullpath_esc'`);
 	      $active_hash_new{$file_fullpath_md5} = "$checksum_stat/$md5_checksum_stat";
 	      check_update($file_fullpath, "$checksum_stat/$md5_checksum_stat", $file_fullpath_md5, $stat_size);
 	  } else {
@@ -565,6 +597,7 @@
 	if ($cfg_backup_style ne "hash"){
 		$file =~ s/^\/(.*)$/$1/;
 	        print LIST "$file\n";
+	        print LIST_SIZE "$stat_size\t$file\n";
 		
 	        # ïÂÒÁÂÁÔÙ×ÁÅÍ ÓÌÕÞÁÊ ÒÁÚÂÉÅÎÉÑ ÇÉÇÁÎÓËÉÈ ÁÒÈÉ×Ï×.
 		if (-l "/$file"){
@@ -599,8 +632,6 @@
     
     $path = "$dir_name/$file_name";
 
-
-
     foreach $item (@fs_notmask){
 	if ($path =~ /$item/){
 	    return 0;
@@ -652,7 +683,7 @@
 
 sub ftp_connect{
     if ( $cfg_type eq "remote_ftp"){
-	$ftp = Net::FTP->new($cfg_remote_host, Timeout => 30, Debug => 0) || die "Can't connect to ftp server.\n";
+	$ftp = Net::FTP->new($cfg_remote_host, Timeout => 30, Debug => 0,  Passive => $cfg_remote_ftp_mode) || die "Can't connect to ftp server.\n";
 	$ftp->login($cfg_remote_login, $cfg_remote_password) || die "Can't login to ftp server.\n";
         $ftp->cwd($cfg_remote_path) || die "Path $cfg_remote_path not found on ftp server.\n";
 	$ftp->binary();    
@@ -843,6 +874,10 @@
 
 Password of remote login for remote_ftp storage type.
 
+=item B<$cfg_remote_ftp_mode> = 0
+
+FTP transfer mode.  0 - Active mode, 1 - Passive mode.
+
 =item B<$cfg_local_path> = '/var/backup/'
 
 Path of directory to store backup on local file system for local storage type.
diff -u --recursive --new-file fsbackup-1.2/install.pl fsbackup-1.2pl1/install.pl
--- fsbackup-1.2/install.pl	2001-12-09 23:15:06 +0500
+++ fsbackup-1.2pl1/install.pl	2005-01-14 15:54:36 +0500
@@ -35,6 +35,7 @@
 chomp($prog_rm = `which rm`);
 chomp($prog_gzip = `which gzip`);
 chomp($prog_pgp	= `which gpg`);
+chomp($prog_sqlite	= `which sqlite`);
 $prog_pg_dump = `which pg_dump` || "/usr/local/pgsql/bin/pg_dump";
 $prog_pg_dump =~ s/^(.*)\/[^\/]+$/$1/;
 chomp($prog_pg_dump);
@@ -89,6 +90,8 @@
 system ("chmod 711 $prefix/scripts/pgsql_backup.sh");
 copyfile("scripts/sysrestore.sh", "$prefix/scripts/sysrestore.sh");
 system ("chmod 711 $prefix/scripts/sysrestore.sh");
+copyfile("scripts/sqlite_backup.sh", "$prefix/scripts/sqlite_backup.sh");
+system ("chmod 711 $prefix/scripts/sqlite_backup.sh");
 
 print "* If you system not support MD5, please manually install module ./modules/Digest-Perl-MD5-1.5.tar.gz\n";
 print "* If Berkeley DB not installed and failed compilation of DB_File-1.77.tar.gz, please manually install DB from http://www.sleepycat.com.\n";
diff -u --recursive --new-file fsbackup-1.2/README fsbackup-1.2pl1/README
--- fsbackup-1.2/README	2002-05-16 17:35:11 +0600
+++ fsbackup-1.2pl1/README	2003-02-08 19:01:21 +0500
@@ -380,7 +380,7 @@
 	$cfg_remote_password="Test1234"; # ÐÁÒÏÌØ ÄÌÑ ×ÈÏÄÁ ÐÏ ftp.
 	$cfg_remote_login="backup_login"; # ìÏÇÉÎ ÐÏÄ ËÏÔÏÒÙÍ ÂÕÄÅÔ ÓÏÈÒÁÎÑÔÓÑ ÂÜËÁÐ.
 	$cfg_remote_path="/home/backup_login/backup"; # äÉÒÅËÔÏÒÉÑ ËÕÄÁ ÄÏÌÖÎÙ ÐÏÍÅÝÁÔØÓÑ ÆÁÊÌÙ ÂÜËÁÐÁ, ÄÉÒÅËÔÏÒÉÑ ÄÏÌÖÎÁ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ.
-	    
+	$cfg_remote_ftp_mode=0; # Active (0) ÉÌÉ Passive (1) ÓÏÅÄÉÎÅÎÉÅ.
 
 ---------------------------------------------------------------------------
 ûÉÆÒÏ×ÁÎÉÅ ÂÜËÁÐÁ:
@@ -410,7 +410,7 @@
 pgp2.6>pgp -ka <ÆÁÊÌ Ó ËÌÀÞÏÍ Ó ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÙ>
 pgp5.0>pgpk -a <ÆÁÊÌ Ó ËÌÀÞÏÍ Ó ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÙ>
 gnupg>gpg --import <ÆÁÊÌ ËÕÄÁ ÂÕÄÅÔ ÚÁÐÉÓÁÎ ËÌÀÞ>
-# äÌÑ pgupg ÎÅÏÂÈÏÄÉÍÏ ÚÁ×ÅÒÉÔØ ËÌÀÞ:
+# äÌÑ pgupg ÎÅÏÂÈÏÄÉÍÏ ÚÁ×ÅÒÉÔØ ËÌÀÞ (gpg --gen-key ÎÁ ÌÏËÌØÎÏÊ ÍÁÛÉÎÅ ÎÅ ÚÁÂÕÄÔÅ):
 gnupg>gpg --sign-key <ÉÍÑ ËÌÀÞÁ>
 
 äÌÑ ÒÁÓÛÉÆÒÏ×ËÉ ÎÅÏÂÈÏÄÉÍÏ ÚÁÐÕÓÔÉÔØ (ÎÁ ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÅ):
@@ -468,3 +468,7 @@
 	  
 Priamikov Alexei <apriam@info.novsu.ac.ru>
 	- ïÂÎÁÒÕÖÅÎÉÅ ÏÛÉÂËÉ × fsrestore.sh
+
+Valeriy Zavolodko <vals@pa.ktts.kharkov.ua>
+	- óÏÏÂÝÅÎÉÅ Ï ÎÅÄÏÒÁÂÏÔËÅ ÐÒÉ ÕÓÔÁÎÏ×ËÅ $cfg_root_path ÏÔÌÉÞÎÙÈ ÏÔ "/".
+	
\ ÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ
diff -u --recursive --new-file fsbackup-1.2/scripts/fsrestore.sh fsbackup-1.2pl1/scripts/fsrestore.sh
--- fsbackup-1.2/scripts/fsrestore.sh	2002-01-26 18:19:45 +0500
+++ fsbackup-1.2pl1/scripts/fsrestore.sh	2004-08-12 16:16:57 +0600
@@ -46,9 +46,9 @@
         echo "Restoring $cur_arc..."
 	gzip_type=`ls $cur_arc|grep '.gz'`
 	if [ -n "$gzip_type" ]; then
-	    tar -xzf $cur_arc -C $restore_path
+	    tar -xpzf $cur_arc -C $restore_path
 	else
-	    tar -xf $cur_arc -C $restore_path
+	    tar -xpf $cur_arc -C $restore_path
 	fi
 	if [ -e "$dir_file" ]; then
 	    echo "Fixing directory permissions for $cur_arc..."
diff -u --recursive --new-file fsbackup-1.2/scripts/pgsql_backup.sh fsbackup-1.2pl1/scripts/pgsql_backup.sh
--- fsbackup-1.2/scripts/pgsql_backup.sh	2002-05-16 19:33:40 +0600
+++ fsbackup-1.2pl1/scripts/pgsql_backup.sh	2004-06-29 12:32:46 +0600
@@ -101,7 +101,7 @@
 # ðÏÌÎÙÊ ÂÜËÁÐ ÄÌÑ Postgresql
 if [ "_$backup_method" = "_full" ]; then
     echo "Creating full backup of all PostgreSQL databases."
-    ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
+#    ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
     ${backup_progdump_path}pg_dumpall $extra_pg_dump_flag|gzip > $backup_path/$backup_name-pgsql.gz
     exit
 
@@ -111,7 +111,7 @@
 # âÜËÁÐ ÕËÁÚÁÎÎÙÈ ÂÁÚ ÄÌÑ Postgresql
 if [ "_$backup_method" = "_db" ]; then
     echo "Creating full backup of $backup_db_list PostgreSQL databases."
-    ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
+#    ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
     cat /dev/null > $backup_path/$backup_name-pgsql
 
     for cur_db in $backup_db_list; do
@@ -129,15 +129,15 @@
 # âÜËÁÐ ×ÓÅÈ ÂÁÚ ËÒÏÍÅ ÕËÁÚÁÎÎÙÈ ÄÌÑ Postgresql
 if [ "_$backup_method" = "_notdb" ]; then
     echo "Creating full backup of all PostgreSQL databases except databases $backup_db_list."
-    ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
+#    ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
     cat /dev/null > $backup_path/$backup_name-pgsql
 
-    for cur_db in `${backup_progdump_path}psql -A -q -t -c "select datname from pg_database" template1 | grep -v '^template1$' `; do
+    for cur_db in `${backup_progdump_path}psql -A -q -t -c "select datname from pg_database" template1 | grep -v '^template[01]$' `; do
 
 	grep_flag=`echo " $backup_db_list"| grep " $cur_db:"`
 	if [ -n "$grep_flag" ]; then
 # éÓËÌÀÞÅÎÉÅ ÔÁÂÌÉÃ ÄÌÑ ÄÁÎÎÏÊ ÂÁÚÙ
-	    for cur_db_table in `echo '\d'| ${backup_progdump_path}psql -A -q -t $cur_db |cut -d'|' -f1`; do
+	    for cur_db_table in `${backup_progdump_path}psql -A -q -t -c "select tablename from pg_tables WHERE tablename NOT LIKE 'pg\_%' AND tablename NOT LIKE 'sql\_%';" $cur_db`; do
 
 		flag=1
 		for cur_ignore in $backup_db_list; do
diff -u --recursive --new-file fsbackup-1.2/scripts/sqlite_backup.sh fsbackup-1.2pl1/scripts/sqlite_backup.sh
--- fsbackup-1.2/scripts/sqlite_backup.sh	1970-01-01 05:00:00 +0500
+++ fsbackup-1.2pl1/scripts/sqlite_backup.sh	2005-01-14 15:51:39 +0500
@@ -0,0 +1,187 @@
+#!/bin/sh
+# Script for backup SQL tables from SQLite
+# óËÒÉÐÔ ÄÌÑ ÂÜËÁÐÁ ÄÁÎÎÙÈ ÈÒÁÎÉÍÙÈ × SQLite
+#
+# http://www.opennet.ru/dev/fsbackup/
+# Copyright (c) 2001-2004 by Maxim Chirkov. <mc@tyumen.ru>
+#
+# For restore data type:
+# ÷ÏÓÓÔÁÎÏ×ÌÅÎÉÅ ÐÒÏÉÚ×ÏÄÉÔÓÑ Ó ÐÏÍÏÝØÀ ËÏÍÁÎÄÙ: 
+#  cat <backupfile> |sqlite <path_to_db_file>
+#
+
+#-------------------
+# Name of backup, single word.
+# éÍÑ ÂÜËÁÐÁ.
+#-------------------
+
+backup_name="test_host"
+
+#-------------------
+# Backup method:
+# full - backup full DB's structure and data.
+# db   - backup full DB's structure and data only for 'backup_db_list' databases.
+# notdb- backup full DB's structure and data for all DB's, except 
+#        data of 'backup_db_list' databases.
+#
+# íÅÔÏÄ ÂÜËÁÐÁ:
+# full	- ÐÏÌÎÙÊ ÂÜËÁÐ ×ÓÅÈ ÂÁÚ (ÒÅËÏÍÅÎÄÕÅÔÓÑ), 
+#	 ÁÎÁÌÏÇ ÚÁÐÕÓËÁ pg_dumpall ÉÌÉ mysqldump --all-databases --all
+#
+# db    - ÂÜËÁÐ ÔÏÌØËÏ ÕËÁÚÁÎÎÙÈ × backup_db_list ÂÁÚ ÄÁÎÎÙÈ, ÚÁÐÉÓÉ ÐÏ 
+#	  ÒÅËÏÎÓÔÒÕËÃÉÉ ÂÁÚ É ÔÁÂÌÉÃ ÚÁÐÉÓÙ×ÁÀÔÓÑ ÄÌÑ ×ÓÅÈ ÂÁÚ ÎÁ SQL ÓÅÒ×ÅÒÅ.
+# notdb  - ÂÜËÁÐ ×ÓÅÈ ÂÁÚ, ËÒÏÍÅ ÕËÁÚÁÎÎÙÈ × backup_db_list, ÚÁÐÉÓÉ ÐÏ 
+#	   ÒÅËÏÎÓÔÒÕËÃÉÉ ÂÁÚ É ÔÁÂÌÉÃ ÚÁÐÉÓÙ×ÁÀÔÓÑ ÄÌÑ ×ÓÅÈ ÂÁÚ ÎÁ SQL ÓÅÒ×ÅÒÅ.
+#          ÷ÏÚÍÏÖÎÏ ÉÓËÌÀÞÅÎÉÅ ÉÚ ÂÜËÁÐÁ  ×ÙÂÏÒÏÞÎÙÈ ÔÁÂÌÉÃ, ÔÏÇÄÁ ÆÏÒÍÁÔ 
+#	   ÓÐÉÓËÁ ÉÓËÌÀÞÁÅÍÙÈ ÔÁÂÌÉÃ ÚÁÄÁÅÔÓÑ × ×ÉÄÅ: 
+#	   "trash_db1 trash_db2:table1 trash_db2:table2"
+#          - ÐÒÏÉÚ×ÏÄÉÍ ÂÜËÁÐ ×ÓÅÈ ÂÁÚ, ËÏÍÅ ÂÁÚÙ trash_db1 É ÔÁÂÌÉÃ table1 É 
+#	   table2 ÂÁÚÙ trash_db2.
+#          
+#
+#-------------------
+
+backup_method="notdb"
+
+#-------------------
+# List of databases (full path delimited by spaces)
+# óÐÉÓÏË ×ËÌÀÞÁÅÍÙÈ ÉÌÉ ÉÓËÌÀÞÁÅÍÙÈ ÉÚ ÂÜËÁÐÁ ÂÁÚ (ÐÏÌÎÙÊ ÐÕÔØ Ë ÂÁÚÅ), ÞÅÒÅÚ ÐÒÏÂÅÌ.
+# ôÁÂÌÉÃÙ ÕËÁÚÙ×ÁÀÔÓÑ × × ÐÅÒÅÍÅÎÎÏÊ backup_tables_list × ×ÉÄÅ: ÉÍÑ_ÂÁÚÙ:ÉÍÑ_ÔÁÂÌÉÃÙ
+# ÷ÎÉÍÁÎÉÅ, ÐÒÉ ×ÙÂÏÒÅ ÍÅÔÏÄÁ "db" ÔÒÅÂÕÅÔ ÐÏÌÎÏÅ ÐÅÒÅÞÉÓÌÅÎÉÅ ×ÓÅÈ 
+# ÐÏÍÅÝÁÅÍÙÈ × ÂÜËÁÐ ÂÁÚ É ÔÁÂÌÉÃ × ÐÅÒÅÍÅÎÎÕÀ backup_tables_list
+#-------------------
+
+backup_db_list="/home/test/test /home/web/work_db /home/rt/rt3"
+backup_tables_list="test rt3:Links"
+
+#-------------------
+# Directory to store SQL backup. You must have enought free disk space to store 
+# all data from you SQL server.
+# äÉÒÅËÔÏÒÉÑ ËÕÄÁ ÂÕÄÅÔ ÐÏÍÅÝÅÎ ÂÜËÁÐ ÄÁÎÎÙÈ Ó SQL ÓÅÒ×ÅÒÁ. 
+# ÷ÎÉÍÁÎÉÅ !!! äÏÌÖÎÏ ÂÙÔØ ÄÏÓÔÁÔÏÞÎÏ Ó×ÏÂÏÄÎÏÇÏ ÍÅÓÔÁ ÄÌÑ ÂÜËÁÐÁ ×ÓÅÈ 
+# ×ÙÂÒÁÎÎÙÈ âä.
+#-------------------
+
+backup_path="/usr/local/fsbackup/sys_backup"
+
+#-------------------
+# Full path of sqlite program.
+# ðÕÔØ Ë ÐÒÏÇÒÁÍÍÅ sqlite
+#-------------------
+
+backup_progdump_path="/usr/local/bin"
+
+############################################################################
+
+if [ -n "$backup_progdump_path" ]; then
+    backup_progdump_path="$backup_progdump_path/"
+fi
+
+#-------------------------------------------------------------------------
+# ðÏÌÎÙÊ ÂÜËÁÐ ÄÌÑ SQLite
+
+if [ "_$backup_method" = "_full" ]; then
+    echo "Creating full backup of all SQLite databases."
+    for cur_db in $backup_db_list; do
+	cur_db_name=`basename $cur_db`
+	if [ -f "$cur_db" ]; then
+	    ${backup_progdump_path}sqlite $cur_db .dump |gzip > $backup_path/$backup_name-$cur_db_name-sqlite.gz
+	else
+	    echo "DB $cur_db not found"
+	fi
+    done
+    exit
+
+fi
+
+#-------------------------------------------------------------------------
+# âÜËÁÐ ÕËÁÚÁÎÎÙÈ ÂÁÚ ÄÌÑ SQLite
+if [ "_$backup_method" = "_db" ]; then
+    echo "Creating full backup of $backup_tables_list SQLite databases."
+
+    for cur_db in $backup_db_list; do
+	cur_db_name=`basename $cur_db`
+	if [ -f "$cur_db" ]; then
+	    echo "Proccessing $cur_db"
+	    flag=0
+	    for cur_acl in $backup_tables_list; do
+		if [ "_$cur_acl" = "_$cur_db_name" ]; then
+		    flag=1
+		fi
+	    done
+    	
+	    if [ $flag -eq 1 ]; then
+	        echo "Dumping $cur_db_name"
+	        ${backup_progdump_path}sqlite $cur_db .dump |gzip > $backup_path/$backup_name-$cur_db_name-sqlite.gz
+	    else
+		rm -f $backup_path/$backup_name-$cur_db_name-sqlite
+	        for cur_db_table in `${backup_progdump_path}sqlite $cur_db .tables`; do
+		    for cur_acl in $backup_tables_list; do
+			if [ "_$cur_acl" = "_$cur_db_name:$cur_db_table" ]; then
+			    echo "  Dumping $cur_db_name:$cur_db_table"
+			    ${backup_progdump_path}sqlite $cur_db ".dump $cur_db_table" >> $backup_path/$backup_name-$cur_db_name-sqlite
+			fi
+		    done
+		done	    
+		if [ -f "$backup_path/$backup_name-$cur_db_name-sqlite" ]; then
+		    gzip -f $backup_path/$backup_name-$cur_db_name-sqlite
+		fi
+	    fi
+	else
+	    echo "DB $cur_db not found"
+	fi
+    done
+    exit
+
+fi
+
+
+#-------------------------------------------------------------------------
+# âÜËÁÐ ×ÓÅÈ ÂÁÚ ËÒÏÍÅ ÕËÁÚÁÎÎÙÈ ÄÌÑ Postgresql
+if [ "_$backup_method" = "_notdb" ]; then
+    echo "Creating full backup of all SQLite databases except databases $backup_tables_list."
+
+    for cur_db in $backup_db_list; do
+	cur_db_name=`basename $cur_db`
+	if [ -f "$cur_db" ]; then
+	    echo "Proccessing $cur_db"
+	    flag=0
+	    for cur_acl in $backup_tables_list; do
+		if [ "_$cur_acl" = "_$cur_db_name" ]; then
+		    flag=1
+		fi
+	    done
+    	    
+	    if [ $flag -eq 1 ]; then
+		echo "Skiping $cur_db_name"
+	    else
+		rm -f $backup_path/$backup_name-$cur_db_name-sqlite
+		for cur_db_table in `${backup_progdump_path}sqlite $cur_db .tables`; do
+		    flag=0
+		    for cur_acl in $backup_tables_list; do
+			if [ "_$cur_acl" = "_$cur_db_name:$cur_db_table" ]; then
+			    echo "  Skiping $cur_db_name:$cur_db_table"
+			    flag=1
+			fi
+		    done
+
+		    if [ $flag -eq 0 ]; then
+			${backup_progdump_path}sqlite $cur_db ".dump $cur_db_table" >> $backup_path/$backup_name-$cur_db_name-sqlite
+    		    fi
+	    	done	    
+	    
+		if [ -f "$backup_path/$backup_name-$cur_db_name-sqlite" ]; then
+		    gzip -f $backup_path/$backup_name-$cur_db_name-sqlite
+		fi
+	    fi
+	else
+	    echo "DB $cur_db not found"
+	fi
+    done
+    exit
+
+fi
+
+echo "Configuration error. Not valid parameters in backup_method or backup_sqltype."
+
+
diff -u --recursive --new-file fsbackup-1.2/TODO fsbackup-1.2pl1/TODO
--- fsbackup-1.2/TODO	2002-05-16 17:35:11 +0600
+++ fsbackup-1.2pl1/TODO	2005-03-23 12:39:51 +0500
@@ -0,0 +1,59 @@
+- ÌÏËÉ ÎÁ ÍÏÍÅÎÔ ÚÁÐÕÓËÁ, ÎÁ ÓÌÕÞÁÊ ÅÓÌÉ ÂÜËÁÐ ÎÅ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÚÁ ÓÕÔËÉ ÉÌÉ
+  ×ÓÔÒÅÔÉÔÓÑ ÐÒÏÂÌÅÍÎÙÊ cron ÄÅÍÏÎ ÐÅÒÉÏÄÉÞÅÓËÉ ÓÈÏÄÑÝÉÊ Ó ÕÍÁ (ÅÓÔØ ÔÁËÏÊ).
+  ðÏ ÉÄÅÅ fsbackup ÂÕÄÅÔ É ÔÁË ÖÄÁÔØ ÎÁ flock, ÎÏ ÌÕÞÛÅ ÓÄÅÌÁÔØ ËÒÁÓÉ×Ï.
+
+-? × ÆÁÊÌÅ ÂÜËÁÐÁ ÄÉÒÅËÔÏÒÉÊ "mkdir" ÚÁÍÅÎÉÔØ ÎÁ "mkdir -p" ? (ÎÅÓÏ×ÍÅÓÔÉÍÏ)
+
+-- ÒÅÖÉÍ ÐÏÌÎÏÇÏ ÁÒÈÉ×Á ÉÚÍÅÎÅÎÉÊ: ÉÎËÒÅÍÅÎÔÁÌØÎÙÊ ÂÜËÁÐ Ó ÂÅÓËÏÎÅÞÎÙÍ ÞÉÓÌÏÍ ÉÚÍÅÎÅÎÉÊ
+  É ÕÄÏÂÎÏÊ ÓÔÒÕËÔÕÒÏÊ ÆÁÊÌÏ× (ÉÅÒÁÒÈÉÑ ÄÉÒÅËÔÏÒÉÊ /ÇÏÄ/ÍÅÓÑÃ/)
+
+- õÄÁÌÅÎÉÅ ÐÒÏÂÅÌÏ× ÐÏÓÌÅ É ÐÅÒÅÄ ÍÁÓËÏÊ (ÓÅÊÞÁÓ ÅÓÌÉ ÐÏÓÌÅ ÉÍÅÎÉ ÐÏÓÔÁ×ÉÔØ ÐÒÏÂÅÌ, ÔÏ ÏÎ ÎÅ ÐÏÍÅÓÔÉÔÓÑ × ÂÜËÁÐ.)
+
+-? ×ÏÓÓÏÚÄÁÎÉÅ ÄÅÒÅ×Á ÄÉÒÅËÔÏÒÉÊ ÉÌÉ ÏÄÎÏÊ ÄÉÒÅËÔÏÒÉÉ, ÓÏÄÅÒÖÉÍÏÅ ËÏÔÏÒÏÊ ÎÅ ÐÏÍÅÝÁÅÔÓÑ × ÁÒÈÉ×.
+
+-? Sync ÅÓÌÉ ÐÏÑ×ÉÌÁÓØ ÎÏ×ÁÑ ÐÕÓÔÁÑ ÄÉÒÅËÔÏÒÉÑ É ÎÅÔ ÎÏ×ÙÈ ÉÌÉ ÉÚÍÅÎÅÎÎÙÈ ÆÁÊÌÏ×,
+  ÔÏ ÎÏ×ÁÑ ÄÉÒÅËÔÏÒÉÑ ÎÅ ÓÉÎÈÒÏÎÉÚÉÒÕÅÔÓÑ.
+  ×ÏÐÒÏÓ ÕÄÁÌÅÎÉÑ ÄÉÒÅËÔÏÒÉÊ ÐÒÉ ÓÉÎÈÒÏÎÉÚÁÃÉÉ.
+
+- ïÔÌÁÄÏÞÎÙÊ ÒÅÖÉÍ, list ÆÁÊÌ ÓÏÄÅÒÖÁÝÉÊ ÐÁÒÁÍÅÔÒÙ ÆÁÊÌÁ (ËÁË ÄÌÑ ÈÅÛÅÊ) É ËÏÄ
+  ÐÒÉÞÉÎÙ ÐÏÍÅÝÅÎÉÑ ÆÁÊÌÁ × ÂÜËÁÐ. (ÒÁÚÍÅÒ ÕÖÅ ÐÏÍÅÓÔÉÌ.)
+
+- ïÔÌÁÄÏÞÎÙÊ ÒÅÖÉÍ, ÆÁÊÌÙ ÎÅ ÐÏÍÅÝÅÎÎÙÅ × ÂÜËÁÐ Ó ÐÒÉÞÉÎÏÊ.
+
+- ÷ listsize ÆÁÊÌÅ ÏÔÒÁÚÉÔØ ËÏÄ ÔÏÍÁ ÁÒÈÉ×Á × ËÏÔÒÙÊ ÐÏÍÅÝÅÎ ÆÁÊÌ.
+
+- ðÏÄÄÅÒÖËÁ bzip2 ÉÚ ËÏÒÏÂËÉ.
+
+- ðÏÄÄÅÒÖËÁ solaris, ÕÂÒÁÔØ -z ËÌÀÞ ÉÚ tar.
+
+- óÐÉÓÏË ÐÕÔÅÊ ÆÁÊÌÏ× (.list ) Ó ÕËÁÚÁÎÉÅÍ ÒÁÚÍÅÒÁ É ÁÔÒÉÂÕÔÏ× × ÞÉÔÁÅÍÏÍ ×ÉÄÅ.
+
+-? ðÁÔÞ ÐÒÉÓÌÁÎÎÙÊ ÐÏ email ÐÒÏÁÎÁÌÉÚÉÒÏ×ÁÔØ É ÅÓÌÉ ÐÏÎÒÁ×ÉÔÓÑ ×ËÌÀÞÉÔØ.
+
+- ðÏÖÅÌÁÎÉÅ ÐÒÉÓÌÁÎÎÙÅ ÐÏ ÅÍÁÊÌ ÐÏ ×ÙÎÏÓÕ ÎÅËÏÒÙÈ ÐÁÒÁÍÅÔÒÏ× (ËÁË ÐÒÉÍÅÒ, 
+  ÒÁÚÍÅÒ ÁËÔÉ×ÎÏÇÏ ÈÅÛÁ) × ËÏÎÆÉÇ.
+  
+- Contrib: 
+
+8 23 * * 1 /usr/local/etc/backup/double_tar.sh
+#!/bin/sh
+rm -rf /backup/reserv.1
+mv -f /backup/reserv.0 /backup/reserv.1
+find /backup/reserv.1 -name OLD -type d -exec rm -rf {} \;
+mkdir /backup/reserv.0
+cp -Rfp /home /backup/reserv.0
+find /backup/reserv.0 -name OLD -type d -exec rm -rf {} \;
+
+- ÞÔÏÂÙ × ËÏÎÆÉÇÅ, ÄÌÑ ÏÄÎÏÇÏ ÂÜËÁÐÁ ÍÏÖÎÏ ÂÙÌÏ ÕËÁÚÙ×ÁÔØ ÓÒÁÚÕ ÎÅÓËÏÌØËÏ
+ÎÁÚÎÁÞÅÎÉÊ.
+÷ÐÏÌÎÅ ×ÅÒÏÑÔÎÏ, ÞÔÏ ÌÀÄÉ ÚÁÈÏÔÑÔ ÈÒÁÎÉÔØ ÏÄÎÕ ËÏÐÉÀ ÂÜËÁÐÁ ÌÏËÁÌØÎÏ, Á
+×ÔÏÒÕÀ ÎÁ ÓÅÒ×ÅÒÅ ÒÅÚÅÒ×ÎÏÇÏ ËÏÐÉÒÏ×ÁÎÉÑ (ÞÅÒÅÚ ssh), Á ÅÝÅ ÏÄÎÕ ËÏÐÉÀ ÞÅÒÅÚ
+ftp ÅÝÅ ÎÁ ÏÄÎÏÍ ÓÅÒ×ÅÒÅ.
+
+- âÜËÁÐ × samba mounts, ÄÉËÅËÔÉ×Á ÄÌÑ ÒÁÚÒÅÛÅÎÉÑ ÓÌÅÄÏ×ÁÎÉÑ ÐÏ ÓÉÍÌÉÎËÁÍ
+    find (\&add_to_backup, $cur_pathitem);
+    find ({ wanted => \&add_to_backup, follow => 1}, $cur_pathitem);
+
+$File::Find::dont_use_nlink = 1;
+
+  
\ ÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ
diff -u --recursive --new-file fsbackup-1.2/VERSION fsbackup-1.2pl1/VERSION
--- fsbackup-1.2/VERSION	2002-05-16 17:35:11 +0600
+++ fsbackup-1.2pl1/VERSION	2002-05-21 14:04:14 +0600
@@ -1 +1 @@
-1.2
\ ÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ
+1.2pl1
\ ÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ
