1. Не вполне ясно, зачем использобать убунту, когда есть Debian?
2. Зачем использовать ftp, когда можно поставить Samba?
3. Против взлома можно поставить fail2ban, в самбе написать в конфиге адрес (или список адресов), откуда можно подключаться, из венды будет всё удобно и прозрачно, как сетевая "папка".
4. Можно бэкапить документы с помощью cwrsync, а на серваке написать скрипт, который будет делать хардлинковые снапшоты резервной копии с помощью cp -ral откуда куда. Если файл в бэкапе не изменился, снапшот не займёт лишнего места.
Минус тут единственный - если бэкапы будут делаться на самбу, вендовый вирус сможет сделать прямую запись в файл и тогда попортит все снапшоты кучей, которые сделаны хард линками.
Вот, например, скрипт ежечасного бэкапа:
#!/bin/sh
BASE=/shares/backups
BASEBK=/shares/snapshots/baskup-last-`date +%H-%M`
rm -rf $BASEBK
mkdir $BASEBK
cp -ral $BASE $BASEBK/
Делает копии расшаренной самбой директории /shares/backups с именами типа backup-last-18-00 в директории снапшотов /shares/snapshots
Вот ещё ежедневный бэкап, чуть более сложная схема
#!/bin/sh
BASE=/путь-откуда-копируем
EXCL=/путь-к-тому-что-не-бэкапим
BASEBK=/shares/snapshots/daily
TODAY=`date +%F`
TODAYBK=backup$TODAY.tgz
DAY10=`date +%F -d'10 days ago'`
DAY10BK=backup$DAY10.tgz
#echo Удаляется самая старая 10-дневная копия
rm -rf $BASEBK/backup$DAY10
mkdir $BASEBK/backup$TODAY
#echo Делается хардлинк-копия на данный момент
cp -ral $BASE $BASEBK/backup$TODAY
Это я написал упрощённо, у меня есть ещё и бэкап MariaDB, облака, директории /etc сервера, резервирование отдельно сайта на вставленную флэшку и даже запись инфы о свободном месте на подключенном разделе /shares:
echo `date +%F` `df -h|grep /shares|awk ' ''{print "свободно "$4" из "$2}'`>>$BASE/diskusage.log