Попробуйте
sudo apt-get purge grub\*
sudo apt-get install grub-efi
sudo apt-get autoremove
sudo update-grub
исправить.
Непонятно: какие разрешения вы изменили? Но я проигнорирую это сообщение:)
Обычно у пользователей системы нет разрешений на запись вне их собственного домашнего каталога, по умолчанию это /home/<user>. Также пользователь-A не может читать большинство файлов пользователя-B. Итак, согласно пути в вашем вопросе, для резервного копирования всех файлов и каталогов, расположенных в /home, вы должны запустить команду с привилегиями root, используя sudo.
Кроме того, вы используете неправильную опцию - x вместо c - используйте tar --help:
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -xf archive.tar # Extract all files from archive.tar.
Таким образом, правая команда должна быть одной из следующих:
sudo tar -zcvf /home/homefiles.tar.gz /home/ --exclude=/home/homefiles.tar.gz # the backup will be created in the directory `/home`
tar -zcvf /home/<user>/homefiles.tar.gz /home/<user> --exclude=/home/<user>/homefiles.tar.gz
Вот расширенный пример для вас:
Предположим вместе с каталогом /home также Apache и MySQL, и мы хотим сделать более полную резервную копию системы.
1. Создайте файл с именем mybackup; сделать его исполняемым; найдите его в /usr/local/bin, чтобы он был доступен как система командной оболочки. Создайте каталог, в котором будут храниться файлы резервных копий:
sudo touch /usr/local/bin/mybackup && sudo chmod +x /usr/local/bin/mybackup
sudo mkdir /var/backup
Вставьте следующий скрипт в качестве содержимого файла /usr/local/bin/mybackup и сохраните его:
#!/bin/bash
## Get the current date as variable.
TODAY="$(date +%Y-%m-%d)"
## Delete backup files older than 2 weeks before create the new one.
find /var/backup/ -mtime +14 -type f -delete
## MySQL Section. The first line is if you are using `mysqldump`,
## the next line is for `automysqlbackup`. I'm using both.
mysqldump -u'root' -p'<my-pwd>' --all-databases | gzip > /var/backup/mysql-all-db.sql.gz
automysqlbackup
## Tar Section. Create a backup file, with the current date in its name.
## Add -h to convert the symbolic links into a regular files.
## Backup some system files, also the entire `/home` directory, etc.
## --exclude some directories, for example the the browser's cache, `.bash_history`, etc.
tar zcvf "/var/backup/my-backup-$TODAY.tgz" \
/etc/hosts /etc/sudoers* /var/spool/cron/crontabs /etc/cron* \
/etc/apache2 /etc/letsencrypt /etc/php/7.0/apache2/php.ini \
/etc/phpmyadmin/apache.conf /etc/mysql/debian.cnf \
/etc/ssh/sshd_config* /etc/pam.d/sshd \
/usr/local/bin \
/var/backup/mysql-all-db.sql.gz /var/lib/automysqlbackup/latest/*.sql.gz \
/root \
/home \
/var/www \
--exclude=/home/<some-user>/.composer --exclude=/home/<some-user>/.npm
## MySQL Section - remove the DB backup files, if you want:
#rm /var/lib/automysqlbackup/latest/*.sql.gz
rm /var/backup/mysql-all-db.sql.gz
Если это VPS, возможно, вы захотите получить доступ к своему файлу резервного копирования из Интернета через веб-браузер. В этом случае мы могли бы зашифровать файл для дополнительной безопасности. Если вы являетесь поклонником 7zip, добавьте некоторую команду в следующую строку внизу: rm /var/www/html/the-location/*
7za a -tzip -p'<my-strong-pwd>' -mem=AES256 "/var/www/html/the-location/my-backup-$TODAY.tgz.7z" "/var/backup/my-backup-$TODAY.tgz"
Если это рабочий стол, возможно, вам захочется исключить весь каталог Downloads для каждого пользователя. Вы также можете исключить все файлы, размер которых превышает или / и исключая расширения некоторых файлов. Обратите внимание, что все команды, используемые выше, расположены в /bin или /usr/bin, которые указаны в умолчанию $PATH Cron. Если вы намерены использовать задание Cron для автоматизации задачи, и у вас есть команды (скрипты), которые расположены за пределами этих каталогов, вы должны использовать /the/full/path/to/the/script :) 1. Чтобы создать резервную копию вручную, теперь вы можете использовать эту команду:
sudo mybackup
3. Чтобы автоматизировать задачу, вы можете добавить новую запись в файл crontab root с помощью команды sudo crontab -e. Например, чтобы исполнить сценарий каждую ночь в 1:15, задание задания Cron должно быть:
15 1 * * * /usr/local/bin/mybackup > /var/log/mybackup-cron.log 2>&1
Если это VPS, возможно, вы захотите получить доступ к своему файлу резервной копии из Интернета через веб-браузер. В этом случае мы могли бы зашифровать файл для дополнительной безопасности. Если вы являетесь фанатом 7zip, добавьте некоторую команду в качестве следующей в нижней части скрипта: rm /var/www/html/the-location/*
7za a -tzip -p'<my-strong-pwd>' -mem=AES256 "/var/www/html/the-location/my-backup-$TODAY.tgz.7z" "/var/backup/my-backup-$TODAY.tgz"
В качестве альтернативы я бы предпочел создать сценарий в /etc/cron.daily/:
sudo touch /etc/cron.daily/mybackup && sudo chmod +x /etc/cron.daily/mybackup
Содержимое файла должно быть чем-то таким:
#!/bin/sh
test -x /usr/local/bin/mybackup || exit 0
echo -e "*** Log Begin $(date +%Y-%m-%d) ***\n" >> /var/log/mybackup-cron.log
/usr/local/bin/mybackup > /var/log/mybackup-cron.log 2>&1
echo -e "*** Log End $(date +%Y-%m-%d) *** \n" >> /var/log/mybackup-cron.log
Обновление:
Вышеупомянутый скрипт можно найти в репозитории GitHub, названном crontab .
Непонятно: какие разрешения вы изменили? Но я проигнорирую это сообщение:)
Обычно у пользователей системы нет разрешений на запись вне их собственного домашнего каталога, по умолчанию это /home/<user>. Также пользователь-A не может читать большинство файлов пользователя-B. Итак, согласно пути в вашем вопросе, для резервного копирования всех файлов и каталогов, расположенных в /home, вы должны запустить команду с привилегиями root, используя sudo.
Кроме того, вы используете неправильную опцию - x вместо c - используйте tar --help:
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -xf archive.tar # Extract all files from archive.tar.
Таким образом, правая команда должна быть одной из следующих:
sudo tar -zcvf /home/homefiles.tar.gz /home/ --exclude=/home/homefiles.tar.gz # the backup will be created in the directory `/home`
tar -zcvf /home/<user>/homefiles.tar.gz /home/<user> --exclude=/home/<user>/homefiles.tar.gz
Вот расширенный пример для вас:
Предположим вместе с каталогом /home также Apache и MySQL, и мы хотим сделать более полную резервную копию системы.
1. Создайте файл с именем mybackup; сделать его исполняемым; найдите его в /usr/local/bin, чтобы он был доступен как система командной оболочки. Создайте каталог, в котором будут храниться файлы резервных копий:
sudo touch /usr/local/bin/mybackup && sudo chmod +x /usr/local/bin/mybackup
sudo mkdir /var/backup
Вставьте следующий скрипт в качестве содержимого файла /usr/local/bin/mybackup и сохраните его:
#!/bin/bash
## Get the current date as variable.
TODAY="$(date +%Y-%m-%d)"
## Delete backup files older than 2 weeks before create the new one.
find /var/backup/ -mtime +14 -type f -delete
## MySQL Section. The first line is if you are using `mysqldump`,
## the next line is for `automysqlbackup`. I'm using both.
mysqldump -u'root' -p'<my-pwd>' --all-databases | gzip > /var/backup/mysql-all-db.sql.gz
automysqlbackup
## Tar Section. Create a backup file, with the current date in its name.
## Add -h to convert the symbolic links into a regular files.
## Backup some system files, also the entire `/home` directory, etc.
## --exclude some directories, for example the the browser's cache, `.bash_history`, etc.
tar zcvf "/var/backup/my-backup-$TODAY.tgz" \
/etc/hosts /etc/sudoers* /var/spool/cron/crontabs /etc/cron* \
/etc/apache2 /etc/letsencrypt /etc/php/7.0/apache2/php.ini \
/etc/phpmyadmin/apache.conf /etc/mysql/debian.cnf \
/etc/ssh/sshd_config* /etc/pam.d/sshd \
/usr/local/bin \
/var/backup/mysql-all-db.sql.gz /var/lib/automysqlbackup/latest/*.sql.gz \
/root \
/home \
/var/www \
--exclude=/home/<some-user>/.composer --exclude=/home/<some-user>/.npm
## MySQL Section - remove the DB backup files, if you want:
#rm /var/lib/automysqlbackup/latest/*.sql.gz
rm /var/backup/mysql-all-db.sql.gz
Если это VPS, возможно, вы захотите получить доступ к своему файлу резервного копирования из Интернета через веб-браузер. В этом случае мы могли бы зашифровать файл для дополнительной безопасности. Если вы являетесь поклонником 7zip, добавьте некоторую команду в следующую строку внизу: rm /var/www/html/the-location/*
7za a -tzip -p'<my-strong-pwd>' -mem=AES256 "/var/www/html/the-location/my-backup-$TODAY.tgz.7z" "/var/backup/my-backup-$TODAY.tgz"
Если это рабочий стол, возможно, вам захочется исключить весь каталог Downloads для каждого пользователя. Вы также можете исключить все файлы, размер которых превышает или / и исключая расширения некоторых файлов. Обратите внимание, что все команды, используемые выше, расположены в /bin или /usr/bin, которые указаны в умолчанию $PATH Cron. Если вы намерены использовать задание Cron для автоматизации задачи, и у вас есть команды (скрипты), которые расположены за пределами этих каталогов, вы должны использовать /the/full/path/to/the/script :) 1. Чтобы создать резервную копию вручную, теперь вы можете использовать эту команду:
sudo mybackup
3. Чтобы автоматизировать задачу, вы можете добавить новую запись в файл crontab root с помощью команды sudo crontab -e. Например, чтобы исполнить сценарий каждую ночь в 1:15, задание задания Cron должно быть:
15 1 * * * /usr/local/bin/mybackup > /var/log/mybackup-cron.log 2>&1
Если это VPS, возможно, вы захотите получить доступ к своему файлу резервной копии из Интернета через веб-браузер. В этом случае мы могли бы зашифровать файл для дополнительной безопасности. Если вы являетесь фанатом 7zip, добавьте некоторую команду в качестве следующей в нижней части скрипта: rm /var/www/html/the-location/*
7za a -tzip -p'<my-strong-pwd>' -mem=AES256 "/var/www/html/the-location/my-backup-$TODAY.tgz.7z" "/var/backup/my-backup-$TODAY.tgz"
В качестве альтернативы я бы предпочел создать сценарий в /etc/cron.daily/:
sudo touch /etc/cron.daily/mybackup && sudo chmod +x /etc/cron.daily/mybackup
Содержимое файла должно быть чем-то таким:
#!/bin/sh
test -x /usr/local/bin/mybackup || exit 0
echo -e "*** Log Begin $(date +%Y-%m-%d) ***\n" >> /var/log/mybackup-cron.log
/usr/local/bin/mybackup > /var/log/mybackup-cron.log 2>&1
echo -e "*** Log End $(date +%Y-%m-%d) *** \n" >> /var/log/mybackup-cron.log
Обновление:
Вышеупомянутый скрипт можно найти в репозитории GitHub, названном crontab .