Monday, December 23, 2019

cron - Failover tmpfs mirroring. Am I doing it right?



My goal is to have a certain directory to be available as tmpfs.
There will be some modifications during server uptime in this dir and those modifications must be synced to non-tmpfs persistent dir on HDD over rsync.



After server boot the latest version from non-tmpfs persistent dir must be moved to tmpfs and rsync syncing to be started.



I'm afraid that rsync will erase non-tmpfs backup if tmpfs dir will be empty..




I'm doing it in this way right now:




  1. create tmpfs partition in /etc/fstab

  2. cat /etc/rc.local (pseudocode)



    delete "tmpfs rsync" cronjob from /var/spool/cron/crontabs if there is any



    cp -r /path/to/non-tmpfs-backup /path/to/tmpfs/dir




    append /var/spool/cron/crontabs with "tmpfs rsync" cronjob




What do you think?


Answer



Create some sort of seed file deep in your non-tmpfs directory and only rsync back to non-tmpfs if it exists (meaning the "boot" copy worked), so something like:



BOOT



mount /path/tmpfs

rsync -aq --delete /path/non-tmpfs/ /path/tmpfs/


CRON



if [ -f /path/tmpfs/some/deep/location/filesgood.txt ]; then
rsync -aq --delete /path/tmpfs/ /path/non-tmpfs/
fi



It's not perfect but, if you enhance that (by looking for 5 "cookie" files during cron if you want to in different directories, e.g.), it should be pretty safe.


No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...