Advertisement
Rnery

Clone HD

Nov 22nd, 2023 (edited)
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.22 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. function check_root() {
  4.   [ "$(id -u)" -ne 0 ] && echo "Por favor, execute este script como root."; exit 1
  5. }
  6.  
  7. function show_usage() {
  8.   echo "Uso: $0 <origem> <destino>"
  9.   echo "Exemplo: $0 /dev/sda /dev/sdb"
  10.   exit 1
  11. }
  12.  
  13. function check_devices_existence() {
  14.   for device in "$1" "$2"; do
  15.     [ ! -e "$device" ] && echo "O dispositivo $device não existe."; exit 1
  16.   done
  17. }
  18.  
  19. function clone_hd() {
  20.   local origem="$1"
  21.   local destino="$2"
  22.  
  23.   echo "Iniciando a clonagem de $origem para $destino..."
  24.   dd if="$origem" of="$destino" bs=4M status=progress
  25.  
  26.   if [ "$?" -eq 0 ]; then
  27.     echo "Clonagem concluída com sucesso."
  28.     exit 1
  29.   fi
  30.   echo "Erro durante a clonagem."
  31. }
  32.  
  33. function unmount_partitions() {
  34.   local destino="$1"
  35.   umount "$destino"* 2>/dev/null
  36. }
  37.  
  38. function main() {
  39.   check_root
  40.  
  41.   [ "$#" -ne 2 ] && show_usage
  42.  
  43.   local origem="$1"
  44.   local destino="$2"
  45.  
  46.   check_devices_existence "$origem" "$destino"
  47.  
  48.   read -p "Este script irá sobrescrever todos os dados em $destino. Deseja continuar? (s/n): " confirmacao
  49.   [ "$confirmacao" != "s" ] && echo "Operação cancelada."; exit 1
  50.  
  51.   unmount_partitions "$destino"
  52.   clone_hd "$origem" "$destino"
  53. }
  54.  
  55. main "$@"
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement