1. install tools:
```
sudo apt-get install pigz lftp curlftpfs
```
2. configure ftp client:
```
lftp
(lftp :~>) set ftp:ssl-force true
(lftp :~>) set ssl:verify-certificate no
(lftp :~>) connect
(lftp :~>) login
(enter password)
```
3. create a file called `.netrc` in the *home* directory to store credentials with the following content:
```
machine
login
password
```
Set the permissions on the file so that you are the only user who can read it:
```
chmod 0600 ~/.netrc
```
4. create *mounting point* for ftp server:
```
sudo mkdir /mnt/ftp
sudo curlftpfs -o allow_other,ssl,no_verify_peer /mnt/ftp
```
5. create compressed archives using *pigz* of desired directories/files in some *tmp* folder:
```
hme="/home/usrname"
tmp=$hme/temp/backup
fconf="list all configuration files"
cd $tmp
tar --exclude=".git*" --exclude="*.Rproj*" --exclude=".Rhistory" --exclude=$tmp -c --use-compress-program=pigz -f $tmp/backup_home.tar.gz $hme/*
tar -c --use-compress-program=pigz -f $tmp/backup_public.tar.gz $PUB_PATH/*
tar -czf $tmp/backup_conf.tar.gz $fconf
```
6. Move files to ftp folder:
```
mv $tmp/* /mnt/ftp
```
7. create *sh* file using *5* and *6* above, then changing permissions:
```
chmod +x /home/usrname/cronjob/backup.sh
```
8. add entry to crontab (in this way, the script runs at 4AM every Sunday):
```
0 4 * * 7 /home/usrname/cronjob/backup.sh
```