На gmail.com я вижу это:
0,38 ГБ (2%) 15 ГБ используются
У меня есть 20 ГБ моего раздела на 30 ГБ, заполненного материалом Ubuntu, но вероятно только 1 ГБ важных документов, итак, почему бы не использовать это бесплатное облачное хранилище для резервного копирования?
Уже существует ли программа, чтобы сделать это? Я, вероятно, запишу тот так или иначе, но требуемый для выяснения, прежде чем я запущу.
Я также хочу сжатие файла и сегментацию, потому что некоторые системы имеют пределы вложения на 10 МБ (как тот на работе).
Спасибо :)
Исходную часть ответа оставляют неповрежденной в следующем разделе для исторической ссылки на метод проб и ошибок
Это - сценарий актуальной резервной копии:
#!/bin/bash
# NAME: daily-backup.sh
# PATH: /mnt/e/bin
# DESC: Backup scripts, documents and configuration files to .tar
# DATE: July 11, 2017. Modified July 7, 2019.
HomeDir="/home/USER_NAME" # Required for cron compatibility
EmailAddr="EMAIL_NAME@gmail.com"
# PARM: 1=backup file name. Extension .tar.gz automatically appended.
# NOTE: To include MBR (Master Boot Record) in backup create an image using:
# sudo dd if=/dev/sda of="$HOME/.mbr.sav" bs=512 count=1
# NOTE: CLONE CURRENT INSTALLATION TO NEW MACHINE
# =========================================
# To restore use Live USB to install Ubuntu alongside Windows 10
# Connect to network with password xxxxxxxxx
# Install Google Chrome
# (https://askubuntu.com/questions/510056/how-to-install-google-chrome):
# wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub
# | sudo apt-key add
# echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/
# stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
# sudo apt update
# sudo apt install google-chrome-stable
# Open gmail.com and download attachment `$1` which is usually called
# Backup-yymmdd-DayOfWeekName.tar
# Make missing home/bin directory which tar doesn't create automatically:
# mkdir ~/bin
# Restore the daily backup using:
# sudo tar -xvf Backup-yymmdd-DayFfWeekName.tar -C /
# yar -xvf Backup-yymmdd-DayFfWeekName.tar -C /
# Patch /etc/default/grub with new machine parameters, ie for nvme use:
# acpiphp.disable=1
# Use `sudo apt install aptitude-common`
# Clone packages using `aptitude-create-state-bundle` on Source
# Copy state-bundle.tar file from Source to Target machine
# Restore packages using `aptitude-run-state-bundle` on Target
# Manually copy ~/Pictures, ~/Videos, etc. not in daily backup.
# sudo update-grub # NVMe suspend/resume acpiphp.disable=1
# sudo update-initramfs # to get plymouth sunrise splash screen
if [[ $# -ne 1 ]]; then
echo 'One argument required for file name, e.g. "Backup-2017-10-21-Saturday"'
echo '.tar will automatically be added as a file extension'
exit 1
fi
Filename="$1.tar"
cd $HomeDir ||
exit 1
dpkg --get-selections > .packages # List of installed applications
tar -cvpf "$Filename" bin # create .tar & add user scripts
tar -rvpf "$Filename" .config/autostart # autostart programs configuration
tar -rvpf "$Filename" /usr/local/bin # add global root-based scripts
tar -rvpf "$Filename" /etc/cron* # crontab, cron.d, cron.daily, etc
tar -rvpf "$Filename" /etc/system* # systemd files: login.conf, etc.
tar -rvpf "$Filename" /lib/systemd/system-sleep
tar -rvpf "$Filename" /etc/rc.local # Startup script: calls zaprestore.
tar -rvpf "$Filename" /etc/sudoers # 120 minute sudo, stars in password
tar -rvpf "$Filename" /etc/environment # PATH backup
tar -rvpf "$Filename" /etc/default/grub # bootstrap loader
#July 20, 2018 - /boot/grub takes 5MB+
#tar -rvpf "$Filename" /boot/grub # Custom grub fonts and splash...
tar -rvpf "$Filename" /usr/share/plymouth # ... screen (plymouth)
#included above tar -rvpf "$Filename" /usr/share/plymouth/themes/earth-sunrise/
tar -rvpf "$Filename" /usr/share/grub/themes/Tuxkiller2/
tar -rvpf "$Filename" /etc/grub.d # 00_header, etc. changes
tar -rvpf "$Filename" Desktop # files and links on desktop
tar -rvpf "$Filename" Documents/*.od* # Libre Office: *.ods, *.odt, etc.
# Trusted keys to install from third party PPAs
tar -rvpf "$Filename" /etc/apt/trusted.gpg
tar -rvpf "$Filename" /etc/apt/trusted.gpg.d
# Sources for repositories - 1) Main single file - 2) directory of files
tar -rvpf "$Filename" /etc/apt/sources.list
tar -rvpf "$Filename" /etc/apt/sources.list.d
# find all $HOME/.config files and add to .tar
find .* -maxdepth 0 -type f -exec tar -rvf "$Filename" {} +
# Nautilus custom scripts
tar -rvpf "$Filename" .local/share/nautilus/scripts
# /etc/udev rules
tar -rvpf "$Filename" /etc/udev/rules.d
# /etc/rc.local
tar -rvpf "$Filename" /etc/rc.local
# /etc/X11/xorg.conf.d
tar -rvpf "$Filename" /etc/X11/xorg.conf.d
# /mnt/e - shared WSL + Linux
tar -rvpf "$Filename" /mnt/e/bin
tar -rvpf "$Filename" /mnt/e/Documents
# ~/eyesome - Development version
tar -rvpf "$Filename" eyesome
# ~/gmail - Python and Bash scripts but NOT huge data files
tar -rvpf "$Filename" gmail/*.py
tar -rvpf "$Filename" gmail/*.sh
tar -rvpf "$Filename" gmail/go
tar -rvpf "$Filename" gmail/BackupSets
tar -rvpf "$Filename" gmail/BackupDays
echo "Complete file list with sizes..."
tar -tvf "$Filename" > BackupLog # list filenames and sizes
chmod a+w BackupLog # give user delete access
echo "Compressing with gzip..."
gzip "$Filename"
Filename="$Filename.gz"
echo "Emailing: $EmailAddr"
# From: https://internetlifeforum.com/gmail/2251-gmail-some-file-types-blocked-fix-how-go-around/
# cat archive.tar.gz | base64 > file
# then i sent the file via email:
# echo "Base64 encoded file" | mutt -a file -s subject -- mymail@gmail.com
# then mail was delivered properly! Then when one need to get readable archive
# again, he need to decode it by base64. In my case i do it via linux command line:
# cat file | base64 -d > decodedarchive.tar.gz
Filename64="$Filename.64"
cat "$Filename" | base64 > "$Filename64"
mail -a "$Filename64" -s "$Filename64" "$EmailAddr" < BackupLog
ls -la "$Filename" "$Filename64"
rm "$Filename" "$Filename64"
exit 0
Замена USER_NAME
выше с Вашим именем пользователя. Замена EMAIL_NAME@gamil.com
с Вашим фактическим адресом Gmail. Измените каталог /mnt/e/bin
к каталогу Вы храните свои сценарии удара. Сохраните файл и выход. Затем используйте:
chmod a+x /mnt/e/bin/backup
Это делает исполняемый файл сценария.
Заметьте, как MBR (Главная загрузочная запись) сохраняется для резервного копирования. Отдельное ранее ступает для создания ~/.mbr.sav
использование sudo dd ...
требуется, как описано в комментариях сценария.
Заметьте dpkg --get-selections
строка. Это создает, создает резервную копию списка всех установленных имен приложений.
От Отправляют предупреждения по электронной почте с помощью ssmtp, мы находим самый простой способ послать электронное письмо, автоматизированное от терминала или сценария. Действия по установке являются прямыми:
sudo apt install ssmtp
sudo nano /etc/ssmtp/ssmtp.conf
# Change "MyEmailAddress" and "MyPassword" to your own.
Существует один шаг, не упомянутый; Google отправит Вас, электронное письмо, подтверждающее Вас, хочет позволить "менее безопасному" приложению отправлять почту с Вашей учетной записью:
После установки и настройки ssmpt
еще один пакет требуется для присоединения .tar файла резервной копии к электронному письму:
sudo apt install sharutils
Этот пакет содержит программу uuencode
который является потребностью преобразовать двоичные файлы для передачи.
cron
ежедневно называть резервный сценарийСоздайте файл /etc/cron.daily/daily-backup
содержа:
#!/bin/sh
#
# NAME: daily-backup
# DESC: A .tar backup file is created, emailed and removed.
# DATE: Nov 25, 2017.
# CALL: WSL or Ubuntu calls from /etc/cron.daily/daily-backup
# PARM: No parameters but /etc/ssmtp/ssmtp.conf must be setup
# NOTE: Backup file name contains machine name + Distro
# Same script for user with multiple dual boot laptops
# Single machine should remove $HOSTNAME from name
# Single distribution should remove $Distro
sleep 30 # Wait 30 seconds after boot
# Running under WSL (Windows Subsystem for Ubuntu)?
if cat /proc/version | grep Microsoft; then
Distro="WSL"
else
Distro="Ubuntu"
fi
today=$( date +%Y-%m-%d-%A )
/mnt/e/bin/daily-backup.sh Daily-$(hostname)-$Distro-backup-$today
Сохраните файл, выход и использование:
chmod a+x /etc/cron.daily/daily-backup
Это делает исполняемый файл сценария.
Каждое утро после /etc/cron.daily/daily-backup
выполняется cron
посылает Вам два электронных письма. Каждый - резервное копирование Backup-YYYY-MM-DD.tar
файл, который в моем случае составляет 5,2 МБ, которых я не могу показать Вам. Другой список от всех файлов в резервном копировании который tar
команда сообщила cron
:
Anacron <Me@gmail.com>
6:58 AM (1 hour ago)
to root, bcc: me
/etc/cron.daily/daily-backup:
bin/
bin/.websync.new
bin/log-gsu-del
bin/now
(... SNIP ...)
.xscreensaver
.xsession-errors
.xsession-errors.old
Потребовался месяц, ожидая ответа и затем месяц, пишущий ответ, но, теперь проект закончен. Продвигаясь это - просто вопрос добавления дополнительных каталогов к резервному сценарию.
Следующий проект будет полным резервным копированием, но это 6 ГБ шириной и будет скопировано в gdrive (Google Drive), потому что Gmail ограничен 25 МБ. Тот сценарий называют /usr/local/bin/full-backup
и включен здесь, если Вам интересно:
#!/bin/bash
# NAME: full-backup
# PATH: $HOME/bin
# DESC: Full system backup - must call with SUDO
# DATE: July 16, 2017. Modified July 26, 2017.
apt autoclean # reduces size of /var/cache/apt/archives
cd /tmp # tar must be created in directory not backed up.
time tar -cvpzf backup.tar.gz \
--exclude=/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/media \
--exclude=/usr/src/linux-headers* \
--exclude=/home/Me/.cache \
--exclude=/var/log \
--exclude=/var/run/ \
--exclude=/run \
--exclude=/var/cache/apt/archives /
Это будет больше "поездкой", чем ответ, поскольку доступные варианты исследуются.
У меня есть два каталога, где я вложил капитал большую часть моего времени с августа 2016:
/home/rick/bin
/usr/local/bin
Когда я сначала создал a tar
файл (ленточный архив) с помощью этих двух каталогов и попробованный, чтобы послать им по электронной почте мне я получил эту ошибку:
Как может два каталога сценариев, переписанных 10 месяцев быть больше, чем 25 МБ? При ближайшем рассмотрении они,> 190 МБ. Whhaaatttt?
По очереди быть единственным файлом, созданным для тестирования:
-rw-rw-r-- 1 rick rick 191143744 Dec 23 17:27 log-gsu-gedit.tst
Поэтому удалите этот тестовый файл и повторно выполните команды:
tar -cvf scripts-2017-06-05.tar /home/rick/bin
tar -rvf scripts-2017-06-05.tar /usr/local/bin
Первая команда создает .tar
файл с помощью одного каталога файлов сценария и второго добавляет к .tar
файл с помощью второго каталога файлов сценария.
.tar
файл является теперь более значительным размером 1,3 МБ:
-rw-rw-r-- 1 rick rick 1341440 Jun 5 17:27 scripts-2017-06-05.tar
Теперь, когда .tar
файл создается, просто войдите gmail.com
и электронная почта файл себе как вложение. На следующем шаге мы захотим a cron
задание, которое ежедневно создает файл и посылает ему по электронной почте автоматически использование MTA
(Агент передачи почты). Опция должна быть установкой в gmail.com для удаления всех этих электронных писем, более старых, чем 30 дней. Тем путем приблизительно только 400 МБ общих резервных копий сценариев будут сохранены.
Я обнаружил сегодня вечером некоторые конфигурационные файлы, трудные скопировать, пока я не споткнулся через этот поток. Рассматриваемые файлы находятся в моем корневом каталоге:
.bashrc
.conkyrc
.websync # one of my own databases
.bafman* # Another one of my own databases
Используя ссылку выше я создал названный сценарий ~/bin/backup
с:
#!/bin/bash
if [[ $1 == "" ]] ; then
echo 'Parameter required for file name, ie "Backup-2017-06-26"'
echo ".tar will automatically be added as a file extension"
exit
fi
tar -cvf $1.tar /home/rick/bin
tar -rvf $1.tar /usr/local/bin
find .* -maxdepth 0 -type f -exec tar -rvf $1.tar {} +
Просмотреть, что находится в .tar
использование архива команда:
tar -tvf Backup-2017-06-26.tar
Не забудьте заменять "Backup-2017-06-26" параметром, который Вы использовали при создании резервного копирования.
Подобные Вопросы и ответы были отправлены в ноябре 2014: Отправьте резервное копирование по электронной почте с crontab. Принятый ответ включен ниже:
Этот после команды работал на меня, когда я протестировал в своей машине.
echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com
Таким образом, вероятно, подход для следования будет чем-то как,
tar -zcf /home/blah/backup.tgz /home/blah/
echo "Please find attached the backup file" | mutt -a "/home/blah/backup.tgz" -s "File attached" -- recipient@domain.com
Я сохраню вышеупомянутый сценарий как backup_email.sh
и запланируйте задание крона как,
0 1 * * * /path/to/backup_email.sh
Ссылки