Simple Integrated Multiplatform Backup & Archive or Simply Accessible Backup & Archive Performance: workstation 2.4 Ghz P4, 512 MB RAM, SATA disk over 100 Mbps Ethernet to server 2.4 Ghz P4, 2 GB RAM, IDE/SCSI disk array ~800000 files / 992387 links (lots of hard links) ~20 GB / 28330052 kB (multiple storage of hard links) time: 4h33m ~ 60 files / sec. ~ 1700 kB / sec cpu usage was negligible. bandwidth limited by network for large files. top files/sec was much higher than average (> 300). conclusion: bottleneck were seek times for DA. (hardly optimizable except maybe by sorting inode numbers) Same the next day: 3171 files transferred. 1h20min. ~200 files / sec. check filenames with non-ascii characters. Seems to work, except if there are non-utf-8 filenames on a utf fs (but that can't really work). check gid bits. Equality checking doesn't work if user is unknown on backup server: -r--r--r-- 1 4294967294 users 1449 2004-12-01 15:44 2006-11-27T23.22.42/yoyo.hjp.at/home/camel/wrk/perl-5.8.8/util.h -r--r--r-- 1 4294967294 users 1449 2004-12-01 15:44 2006-11-28T10.18.30/yoyo.hjp.at/home/camel/wrk/perl-5.8.8/util.h should be one file with two links, not two files. Tape performance: DDS4 (Vendor: HP Model: C5683A): About 5-6 MB/s for /dev/nst0, @ 64 kB Blocksize. (larger bs makes no difference). File was about 26 MB, 75% compressible with gzip. exit if disk full On my 800 MHz PIII, the CPU usage is rather high. Some profiling seems to be necessary (or I should get a faster backup server :-)). mkdir_p doesn't report the real reason of a failure: mkdir_p('/backup/2008-06-20T08.10.56/zeno.hjp.at/.', 777) mkdir_p('/backup/2008-06-20T08.10.56/zeno.hjp.at', 777) mkdir_p('/backup/2008-06-20T08.10.56', 777) failed: Read-only file system cannot mkdir /backup/2008-06-20T08.10.56/zeno.hjp.at/.: No such file or directory at /usr/local/share/perl/5.8.8/Simba/CA.pm line 180, line 1. The real reason is "Read-only file system" but after mkdir_p returns, $! is "No such file or directory". (and anyway Simba::CA::backup2disk shouldn't just die, but write a message to the log file first, but that's a different problem) Ideas: * Check if File::Path behaves better. * Die on error and let caller catch the error.