Questões globais:
- Use recuo . Isso torna seu código mais legível (para você e para nós).
- Use apenas aspas direitas no bash . Outros tipos de citações podem quebrar comandos.
-
Não acrescente
;
no final de um único comando . O caractere;
tem um significado específico e é inútil se anexado a um único comando.
Questões específicas:
fdisk -l;
Você precisa executar fdisk
como sudo
: sudo fdisk -l
read -n1 -p “Would you like to back up your system? Uno for Si, and Dos for No.”
Você não está armazenando essa entrada em nenhum lugar. Vendo o código abaixo, você está perdendo input
no final (ocupa o espaço após as aspas duplas): read -n1 -p "Would you like to back up your system? Uno for Si, and Dos for No." input
sudo mkdir -p /mnt/$disk && sudo mount /dev/$disk /mnt/$disk && sudo mkdir -p /mnt/$disk/Backups && sudo tar -cp $(date +%Y%m%d).tar --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups . && sudo cp $(date +%Y%m%d-%H).tar /mnt/$disk/Backups;
O comando tar
está sem uma opção -f
: sem ele tar
envia para stdout
e não para o arquivo especificado; também o nome do arquivo deve ser $(date +%Y%m%d-%H)
para corresponder ao nome do arquivo esperado de cp
: sudo mkdir -p /mnt/$disk && sudo mount /dev/$disk /mnt/$disk && sudo mkdir -p /mnt/$disk/Backups && sudo tar -cpf $(date +%Y%m%d-%H).tar --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups . && sudo cp $(date +%Y%m%d-%H).tar /mnt/$disk/Backups;
Nota final: ao fazer isso, você está deixando todos os backups em /
, mas também está excluindo um diretório /backups/
do backup, por isso, parece que sua meta é armazenar uma cópia de cada backup nessa pasta. Certifique-se de que essa pasta exista. A versão corrigida do último comando de acordo com isso é:
sudo mkdir -p /mnt/$disk && sudo mount /dev/$disk /mnt/$disk && sudo mkdir -p /mnt/$disk/Backups && sudo tar -cpf backups/$(date +%Y%m%d-%H).tar --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups . && sudo cp backups/$(date +%Y%m%d-%H).tar /mnt/$disk/Backups;
Portanto, a versão corrigida, indecisa, sem cotação, inútil do ;
-free do script é:
#!/bin/bash
read -n1 -p "Would you like to back up your system? Uno for Si, and Dos for No." input
echo
case $input in
1)
sudo fdisk -l
echo
read -p "Please enter the name of your backup disk that was displayed in the fdisk window: " disk
echo
echo "Backups now in progress! Please be aware that backups are saved to a Backups directory which this script creates, and backups are tarred and labelled by date!"
echo "THIS WILL TAKE A VERY VERY LONG TIME IF YOU HAVE A LARGE FILESYSTEM! PLEASE BE PATIENT!!!"
cd /
sudo mkdir -p /mnt/$disk && sudo mount /dev/$disk /mnt/$disk && sudo mkdir -p /mnt/$disk/Backups && sudo tar -cpf backups/$(date +%Y%m%d-%H).tar --directory=/ --exclude=proc --exclude=sys --exclude=dev/pts --exclude=backups . && sudo cp backups/$(date +%Y%m%d-%H).tar /mnt/$disk/Backups;
echo "Okay, all done! To restore your system, you will have to untar and manually do it yourself. If you have any issues, email [email protected]!"
;;
2)
echo "Then why are you running this script?"
;;
*)
echo "I'm sorry, but I can’t do that…"
;;
esac
Última coisa: Nunca deixe seu endereço de e-mail na Web . Os spammers vão raspá-lo. Eu o substitui por [email protected]
em minha resposta, em sua resposta e em sua pergunta.