RE: Hardware requirements » svn-backup2.php
| 1 |
#!/usr/bin/php5 -q |
|---|---|
| 2 |
|
| 3 |
<?php
|
| 4 |
|
| 5 |
# Requires PHP5 or the file_put_contents() function from PEAR::Compat
|
| 6 |
|
| 7 |
# this is a directory with my svn repositories in it
|
| 8 |
$source_dir = "/var/svn"; |
| 9 |
# this is where the svn dumps will go
|
| 10 |
$dest_dir = "/mnt/server/DS/SVN"; |
| 11 |
# we only back up repositories which have changed
|
| 12 |
$hashfile = "/tmp/hash/hashes.txt"; |
| 13 |
|
| 14 |
$date = system("date +%Y-%m-%d"); |
| 15 |
|
| 16 |
# read in the existing hash file if there is one
|
| 17 |
$hashes = array(); |
| 18 |
$hashlines = array(); |
| 19 |
if (file_exists($hashfile)) { |
| 20 |
$hashlines = file($hashfile); |
| 21 |
}
|
| 22 |
|
| 23 |
# build this into an useful array
|
| 24 |
foreach($hashlines as $hashline) { |
| 25 |
$key = substr($hashline,0,strpos($hashline,":")); |
| 26 |
$value = substr($hashline,strpos($hashline,":")+1); |
| 27 |
if ($key && $value) { |
| 28 |
$hashes[$key] = $value; |
| 29 |
}
|
| 30 |
}
|
| 31 |
|
| 32 |
# Compress repositories folder
|
| 33 |
system("tar -cf $dest_dir/$date.tar $source_dir/*"); |
| 34 |
|
| 35 |
# Remove oldest backup
|
| 36 |
# system("find $dest_dir -amin +6000 -exec rm '{}'");
|
| 37 |
system("find $dest_dir -amin +6000 -exec rm '{}' \ "); |
| 38 |
|
| 39 |
$hashelines = ""; |
| 40 |
foreach($hashes as $key => $md5) { |
| 41 |
$hashelines .= "$key:$md5\n"; |
| 42 |
}
|
| 43 |
|
| 44 |
file_put_contents($hashfile, $hashelines); |
| 45 |
|
| 46 |
?>
|
| 47 |
|
- « Previous
- 1
- 2
- Next »