Rsync, which stands for “remote sync”, is a remote and local file synchronization tool. It uses an algorithm that minimizes the amount of data copied by only moving the portions of files that have changed. So, you can use
rsync to handle this case.
Rsync is a very flexible network-enabled syncing tool. It can also refer to the network protocol developed to utilize this tool. When we reference rsync in this guide, we are mainly referring to the utility, and not the protocol.
Due to its ubiquity on Linux and Unix-like systems and its popularity as a tool for system scripts, it is included on most Linux distributions by default.
rsync -a --exclude "*.pyc" /path/to/origin-directory/* /path/to/destination/
And then, add your command into bash file:
#!/bin/bash ORIGIN="/home/yourusername/projects/*" DESTINATION="/media/yourusername/Elements/jobs/projects/" if [ -d $DESTINATION ]; then rsync -a --exclude "*.pyc" $ORIGIN $DESTINATION; echo "Updated at:" $(date); else echo "Path $DESTINATION not found."; echo "Not updated at:" $(date); fi
Change mode for your bash file:
$ chmod +x autosync.sh
Don’t miss to add into cronjobs
$ crontab -e
then, in your editor:
# Select shell mode SHELL=/bin/bash # sync the folders for every hours, for more: https://crontab.guru/every-1-hour 0 * * * * /home/yourusername/tools/autosync.sh > /yourusername/tools/autosync.log 2>&1
You can also sync the destination folder which deleting some deleted files or folders in source folder.
rsync -avh --delete --exclude "*.pyc" $ORIGIN $DESTINATION;