I use Picasa a lot even Google stopped developing it. I put the Picasa folder on Desktop so it can be replicated by iCloud which makes that I can have the same files and folders on both office and home mac. Recently, I found that the modification I made on one mac can’t be synchronized to another, and vice versa.
The issue is that Picasa does not REALLY modify the picture, it put the modification in a hidden file called .picasa.ini under every folder, which won’t be replicated by iCloud. The solution is to create a none hidden file I named picasa.ini duplicated from .picasa.ini , then delete the original .picasa then create a symbol link .picasa.ini to picasa.ini .
The following Perl code does the batch job, a quick dirty one. It will test the folder to see whether .picasa.ini exists, once it has .picasa.ini means it’s a Picasa folder. Then it tests the picasa.ini file, it will duplicate .picasa.ini once it doesn’t exist. Then do the following jobs.
#!/usr/bin/perl
$dir_to_process = ".";
opendir DIR, $dir_to_process
or die "Cannot open $dir_to_process: $!";
foreach $file (readdir DIR) {
if (-d $file) {
print "$file is a directory\n";
$file_dot=".picasa.ini";
$file_nodot="picasa.ini";
opendir PICASA, $file;
foreach $ffile (readdir PICASA) {
if ($ffile eq $file_dot) {
print ".picasa.ini found in $file\n";
$mark_dot_picasa = 1;
if (-l $file."/".$ffile) {
print ".picasa.ini is already a symbol link.\n";
$mark_islink = 1;
} else {
print ".picasa.ini isn't a symbol link, need to do something.\n";
}
if ($ffile eq $file_nodot) {
print "picasa.ini found in $file\n";
$mark_nodot_picasa=1;
}
}
}
if (($mark_nodot_picasa) && ($mark_islink)) {
print "This folder was already processed.\n";
print "Nothing need to be touched.\n\n";
}
if (!$mark_dot_picasa) {
print "This is not a picasa folder.\n\n";
}
$_ = $file;
~s/\'/\\\'/g;
~s/\ /\\\ /g;
~s/\&/\\\&/g;
~s/\@/\\\@/g;
$file = $_;
if (($mark_dot_picasa)&&(!($mark_islink))) {
if (!($mark_nodot_picasa)) {
print "Move .picasa.ini to picasa.ini\n";
system ("cp $file/.picasa.ini $file/picasa.ini.backup");
system ("mv $file/.picasa.ini $file/picasa.ini");
print ".picasa is backup.\n";
print "Created picasa.ini.\n";
} else {
system ("rm $file/.picasa.ini");
print "picasa.ini already exists, just remove none symbol link .picasa.ini.";
}
system ("ln -s picasa.ini $file/.picasa.ini");
print "Symbol linked .picasa to picasa.ini.\n";
}
}
if (($mark_dot_picasa)&&($mark_nodot_picasa)&&(!($mark_islink))) {
print ".picasa.ini and picasa.ini exist and .picasa is not a symbol link, delete .picasa.ini and create link.\n";
}
$mark_dot_picasa = 0;
$mark_nodot_picasa = 0;
$mark_islink = 0;
print "\n";
closedir PICASA;
}
closedir DIR;