Skip to content

Instantly share code, notes, and snippets.

@vkushnir
Last active September 20, 2023 00:27
Show Gist options
  • Save vkushnir/3a3b3b82d8a01d18f14731208115deaf to your computer and use it in GitHub Desktop.
Save vkushnir/3a3b3b82d8a01d18f14731208115deaf to your computer and use it in GitHub Desktop.
RClone utilites [https://rclone.org/]

RCLONE Copy

RClone Downloads

Latest versions:

Or install from script

curl https://rclone.org/install.sh | sudo bash

Setup

Run configuration

rclone config

and add target cloud

mkdir /etc/rclone

crontab

@daily /etc/rclone/rclone-copy.sh &>> /var/log/rclone.log

/etc/rclone

Put files in to /etc/rclone for:

  • /etc – etc.list
  • /var – var.list
  • /usr – usr.list
  • /<dir> – <dir>.list

And put list of files/folders in to that files

Sample:

/etc/rclone/etc.list

network/interfaces
sysconfig/network-scripts/ifcfg*
sysconfig/network-scripts/route*
radiusd
isg
init/radiusd*
logrotate.d/radiusd*
logrotate.d/isg

/etc/rclone/var.list

spool/cron

/etc/rclone/usr.list

bin/rclone-copy.sh
@daily /etc/rclone/rclone-copy.sh &>> /var/log/rclone.log
/var/log/rclone.log {
daily
rotate 4
missingok
notifempty
nocreate
}
#!/bin/bash
# Copy all folders from <prefix>.list files to cloud
shopt -s nullglob
cloud="cloud:Servers/${HOSTNAME^^}"
backup="cloud:Backup/${HOSTNAME^^}"
exclude="*.{log,log.*}"
if [ $# -ge 1 ]; then
lists="$1/*.list"
else
lists=/etc/rclone/*.list
fi
for list in $lists; do
fn=$(basename $list)
pfx=${fn%%.list}
while read line; do
for fn in $line; do
if [ -d /$pfx/$fn ]; then
rclone copy --backup-dir "$backup/$pfx/$fn" --exclude "$exclude" "/$pfx/$fn" "$cloud/$pfx/$fn"
elif [ -f /$pfx/$fn ]; then
dn=$(dirname $fn)
rclone copyto --backup-dir "$backup/$pfx/$dn" "/$pfx/$fn" "$cloud/$pfx/$fn"
else
(>&2 echo "'$pfx/$fn' is none file or directory!")
fi
done
done < $list
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment