Showing posts with label perl. Show all posts
Showing posts with label perl. Show all posts

Tuesday, July 31, 2007

Website Backup

We manage our website through FTP. I wrote a script using Perl to back up the site every day. This allows me to "undo" changes by going back to older versions of a file.

I realize that this could be written in pure Perl, without relying on wget, but why reinvent the wheel?


#!/usr/bin/perl
use warnings;

$datedir=`date +%F`;
chomp $datedir;
$rootdir="/var/backup/web/".$datedir;
$ftpsite="ftp.website.com";
$credentials="/root/ftp.txt"; #text file, one line: username:password


mkdir ("$rootdir", 0755) unless (-d "$rootdir");

open (UPASS, $credentials) or die;
$creds = <UPASS>;
close (UPASS);

($username,$password) = split (/:/,$creds);

$username=~s/\s+//; #strip whitespace characters - just in case
$password=~s/\s+//;

chdir($rootdir);

$result=`wget ftp://$ftpsite/Web --user=$username --password=$password -nH -m --cut-dirs=1`;

open (LOGFILE,"> backup.log");
print LOGFILE "$result";
close (LOGFILE);

Monday, July 30, 2007

Automatic Picture Sorting

I have an IP camera which FTPs pictures up to my server whenever it detects motion. In order to keep the pictures organized, I wrote this script to automatically sort the pictures into folders based on date.

The pictures have randomly generated names starting with "video" such as "videotrg0494333888.jpg" so I use a regex to match the string "video" and move all files which match into a subdirectory which is formatted YEAR-MM-DD

I have cron run this script every 5 minutes.

-----

#!/usr/bin/perl
use warnings;
use File::Copy;

$datedir=`date +%F`;
chomp $datedir;
$rootdir="/var/camera";

mkdir ("$rootdir/$datedir", 0755) unless (-d "$rootdir/$datedir");

opendir(CAMERA, "$rootdir");
while (defined ($picture = readdir(CAMERA))) {
if ($picture=~/video/) {
move("$rootdir/$picture","$rootdir/$datedir");
}
}