2017-05-18 09:55:20 +00:00
|
|
|
# Clonezilla CLI to Clone and Restore
|
|
|
|
A few commandline functions to do clonezilla cloning or restoring on linux.
|
|
|
|
Works with single partitions or full disk. Supports EXT, FAT, NTFS ...etc.
|
|
|
|
Check the clonezilla site for other supported filesystems else it will use the dd command.
|
|
|
|
|
|
|
|
* tutorial video: [Link](https://www.youtube.com/watch?v=z0WBIOtj5Fo)
|
|
|
|
* offical website: [Link](http://clonezilla.org/)
|
|
|
|
|
|
|
|
### install requirements
|
|
|
|
clonezilla
|
|
|
|
|
|
|
|
### configuration
|
|
|
|
vim ~/.zshrc or vim ~/.bashrc
|
|
|
|
|
|
|
|
|
|
|
|
#-------- Bash Color Code {{{
|
|
|
|
#------------------------------------------------------
|
|
|
|
# DESC: color code for bash compatible shell
|
|
|
|
# LINK: https://wiki.archlinux.org/index.php?title=Bash/Prompt_customization&oldid=419076#List_of_colors_for_prompt_and_Bash
|
|
|
|
|
|
|
|
# Reset
|
|
|
|
Color_Off='\e[0m' # Text Reset
|
|
|
|
|
|
|
|
# Regular Colors
|
|
|
|
Black='\e[0;30m' # Black
|
|
|
|
Red='\e[0;31m' # Red
|
|
|
|
Green='\e[0;32m' # Green
|
|
|
|
Yellow='\e[0;33m' # Yellow
|
|
|
|
Blue='\e[0;34m' # Blue
|
|
|
|
Purple='\e[0;35m' # Purple
|
|
|
|
Cyan='\e[0;36m' # Cyan
|
|
|
|
White='\e[0;37m' # White
|
|
|
|
|
|
|
|
# Bold
|
|
|
|
BBlack='\e[1;30m' # Black
|
|
|
|
BRed='\e[1;31m' # Red
|
|
|
|
BGreen='\e[1;32m' # Green
|
|
|
|
BYellow='\e[1;33m' # Yellow
|
|
|
|
BBlue='\e[1;34m' # Blue
|
|
|
|
BPurple='\e[1;35m' # Purple
|
|
|
|
BCyan='\e[1;36m' # Cyan
|
|
|
|
BWhite='\e[1;37m' # White
|
|
|
|
|
|
|
|
# Underline
|
|
|
|
UBlack='\e[4;30m' # Black
|
|
|
|
URed='\e[4;31m' # Red
|
|
|
|
UGreen='\e[4;32m' # Green
|
|
|
|
UYellow='\e[4;33m' # Yellow
|
|
|
|
UBlue='\e[4;34m' # Blue
|
|
|
|
UPurple='\e[4;35m' # Purple
|
|
|
|
UCyan='\e[4;36m' # Cyan
|
|
|
|
UWhite='\e[4;37m' # White
|
|
|
|
|
|
|
|
# Background
|
|
|
|
On_Black='\e[40m' # Black
|
|
|
|
On_Red='\e[41m' # Red
|
|
|
|
On_Green='\e[42m' # Green
|
|
|
|
On_Yellow='\e[43m' # Yellow
|
|
|
|
On_Blue='\e[44m' # Blue
|
|
|
|
On_Purple='\e[45m' # Purple
|
|
|
|
On_Cyan='\e[46m' # Cyan
|
|
|
|
On_White='\e[47m' # White
|
|
|
|
|
|
|
|
# High Intensity
|
|
|
|
IBlack='\e[0;90m' # Black
|
|
|
|
IRed='\e[0;91m' # Red
|
|
|
|
IGreen='\e[0;92m' # Green
|
|
|
|
IYellow='\e[0;93m' # Yellow
|
|
|
|
IBlue='\e[0;94m' # Blue
|
|
|
|
IPurple='\e[0;95m' # Purple
|
|
|
|
ICyan='\e[0;96m' # Cyan
|
|
|
|
IWhite='\e[0;97m' # White
|
|
|
|
|
|
|
|
# Bold High Intensity
|
|
|
|
BIBlack='\e[1;90m' # Black
|
|
|
|
BIRed='\e[1;91m' # Red
|
|
|
|
BIGreen='\e[1;92m' # Green
|
|
|
|
BIYellow='\e[1;93m' # Yellow
|
|
|
|
BIBlue='\e[1;94m' # Blue
|
|
|
|
BIPurple='\e[1;95m' # Purple
|
|
|
|
BICyan='\e[1;96m' # Cyan
|
|
|
|
BIWhite='\e[1;97m' # White
|
|
|
|
|
|
|
|
# High Intensity backgrounds
|
|
|
|
On_IBlack='\e[0;100m' # Black
|
|
|
|
On_IRed='\e[0;101m' # Red
|
|
|
|
On_IGreen='\e[0;102m' # Green
|
|
|
|
On_IYellow='\e[0;103m' # Yellow
|
|
|
|
On_IBlue='\e[0;104m' # Blue
|
|
|
|
On_IPurple='\e[10;95m' # Purple
|
|
|
|
On_ICyan='\e[0;106m' # Cyan
|
|
|
|
On_IWhite='\e[0;107m' # White
|
|
|
|
|
|
|
|
# }}}
|
|
|
|
|
|
|
|
#-------- Clonezilla CLI (Clone and Restore Image) {{{
|
|
|
|
#------------------------------------------------------
|
|
|
|
### Full Disk Clone and Restore
|
|
|
|
clonezilla-disk-cloning() {
|
|
|
|
if [ $# -lt 2 ]; then
|
|
|
|
echo -e "clone full disk to image"
|
|
|
|
echo -e "\nUsage: $0 <output_file> <device>"
|
|
|
|
echo -e "\nExample: $0 mydesktop sdx"
|
|
|
|
echo -e "\nNote: <output_file> will be saved to your current path"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
OUTPUT_FILE="$1_clonezilla_disk_`date +'%Y_%m_%d'`"
|
|
|
|
DEVICE_NAME="$2"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Yellow}>>>Checking if device is mounted ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
MOUNT_STATUS=$(mount | grep /dev/"$DEVICE_NAME" | wc -l)
|
|
|
|
if [ "$MOUNT_STATUS" -ne 0 ]
|
|
|
|
then
|
|
|
|
lsblk -o "NAME,SIZE,FSTYPE,TYPE,LABEL,MOUNTPOINT,UUID" | grep "$DEVICE_NAME"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Red}>>>/dev/$DEVICE_NAME is mounted. You have to unmount the device and all of its partitions then try again ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
return 1
|
|
|
|
fi
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Blue}>>>Set current output path to $PWD ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo sed -i 's:ocsroot=.*:ocsroot='\""$PWD"\"':g' /etc/drbl/drbl.conf
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Green}>>>Start full disk cloning process ${Color_Off}"
|
|
|
|
echo -e "${Green}>>>$OUTPUT_FILE image will be saved to $PWD ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo ocs-sr -q2 -c -j2 -z1p -i 5000000 -sc -p true savedisk "$OUTPUT_FILE" "$DEVICE_NAME"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Red}>>>Changing permission of $OUTPUT_FILE image ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo chmod -R 777 "$OUTPUT_FILE"
|
|
|
|
}
|
|
|
|
|
|
|
|
clonezilla-disk-restore() {
|
|
|
|
if [ $# -lt 2 ]; then
|
|
|
|
echo -e "restore full disk image to device"
|
|
|
|
echo -e "\nUsage: $0 <input_file> <device>"
|
|
|
|
echo -e "\nExample: $0 mydesktop_clonezilla_disk_2016_07_02 sdx"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
INPUT_FILE="$1"
|
|
|
|
DEVICE_NAME="$2"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Yellow}>>>Checking if device is mounted ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
MOUNT_STATUS=$(mount | grep /dev/"$DEVICE_NAME" | wc -l)
|
|
|
|
if [ "$MOUNT_STATUS" -ne 0 ]
|
|
|
|
then
|
|
|
|
lsblk -o "NAME,SIZE,FSTYPE,TYPE,LABEL,MOUNTPOINT,UUID" | grep "$DEVICE_NAME"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Red}>>>/dev/$DEVICE_NAME is mounted. You have to unmount the device and all of its partitions then try again ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
return 1
|
|
|
|
fi
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Green}>>>Start full disk restore process ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo /usr/sbin/ocs-sr -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk "$INPUT_FILE" "$DEVICE_NAME"
|
|
|
|
}
|
|
|
|
|
|
|
|
### Partition Clone and Restore
|
|
|
|
clonezilla-partition-cloning() {
|
|
|
|
if [ $# -lt 2 ]; then
|
|
|
|
echo -e "clone device partition to image"
|
|
|
|
echo -e "\nUsage: $0 <output_file> <device>"
|
|
|
|
echo -e "\nExample: $0 mylaptop sdx2"
|
|
|
|
echo -e "\nNote: <output_file> will be saved to your current path"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
OUTPUT_FILE="$1_clonezilla_part${PART_NUM}_`date +'%Y_%m_%d'`"
|
|
|
|
DEVICE_NAME="$2"
|
|
|
|
PART_NUM=$(echo "$2" | sed 's/[^0-9]*//g')
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Yellow}>>>Checking if device is mounted ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
MOUNT_STATUS=$(mount | grep /dev/"$DEVICE_NAME" | wc -l)
|
|
|
|
if [ "$MOUNT_STATUS" -ne 0 ]
|
|
|
|
then
|
|
|
|
lsblk -o "NAME,SIZE,FSTYPE,TYPE,LABEL,MOUNTPOINT,UUID" | grep "$DEVICE_NAME"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Red}>>>/dev/$DEVICE_NAME is mounted. You have to unmount then try again ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
return 1
|
|
|
|
fi
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Blue}>>>Set current output path to $PWD ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo sed -i 's:ocsroot=.*:ocsroot='\""$PWD"\"':g' /etc/drbl/drbl.conf
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Green}>>>Start partition cloning process ${Color_Off}"
|
|
|
|
echo -e "${Green}>>>$OUTPUT_FILE image will be saved to $PWD ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo /usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 5000000 -sc -p true saveparts "$OUTPUT_FILE" "$DEVICE_NAME"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Red}>>>Changing permission of $OUTPUT_FILE image ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo chmod -R 777 "$OUTPUT_FILE"
|
|
|
|
}
|
|
|
|
|
|
|
|
clonezilla-partition-restore() {
|
|
|
|
if [ $# -lt 2 ]; then
|
|
|
|
echo -e "restore image to device partition"
|
|
|
|
echo -e "\nUsage: $0 <input_file> <device>"
|
|
|
|
echo -e "\nExample: $0 mylaptop_clonezilla_partition2_2016_07_02 sdx2"
|
|
|
|
echo -e "\nNote: partition <device> usually have numbers at the end (sdx1)"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
INPUT_FILE="$1"
|
|
|
|
DEVICE_NAME="$2"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Yellow}>>>Checking if device is mounted ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
MOUNT_STATUS=$(mount | grep /dev/"$DEVICE_NAME" | wc -l)
|
|
|
|
if [ "$MOUNT_STATUS" -ne 0 ]
|
|
|
|
then
|
|
|
|
lsblk -o "NAME,SIZE,FSTYPE,TYPE,LABEL,MOUNTPOINT,UUID" | grep "$DEVICE_NAME"
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Red}>>>/dev/$DEVICE_NAME is mounted. You have to unmount then try again ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
return 1
|
|
|
|
fi
|
2018-02-07 02:36:52 +00:00
|
|
|
echo -e "${Green}>>>Start partition restore process ${Color_Off}"
|
2017-05-18 09:55:20 +00:00
|
|
|
sudo /usr/sbin/ocs-sr -g auto -e1 auto -e2 -c -r -j2 -k -p true restoreparts "$INPUT_FILE" "$DEVICE_NAME"
|
|
|
|
}
|
|
|
|
|
|
|
|
# }}}
|
|
|
|
|
2018-02-07 02:36:52 +00:00
|
|
|
|
2017-05-18 09:55:20 +00:00
|
|
|
### other commands
|
|
|
|
|
|
|
|
alias df='df -hT --total' # human readable, print filetype, and total
|
|
|
|
alias lsblk='lsblk -o "KNAME,HOTPLUG,SIZE,FSTYPE,TYPE,LABEL,MOUNTPOINT,UUID,MODEL,SERIAL"'
|
|
|
|
|
|
|
|
### usage
|
|
|
|
|
|
|
|
## Make sure you have enough space to save the image
|
|
|
|
## Image will be saved to the current shell path
|
|
|
|
|
|
|
|
# backup
|
|
|
|
df
|
|
|
|
mkdir mysaveddata
|
|
|
|
cd mysaveddata
|
|
|
|
lsblk
|
|
|
|
clonezilla-disk-cloning myusbdrive sdd
|
|
|
|
|
|
|
|
|
|
|
|
## The device/partition has to be equal or greater in order for you to restore to it
|
|
|
|
|
|
|
|
# restore
|
|
|
|
cd mysaveddata
|
|
|
|
lsblk
|
|
|
|
clonezilla-disk-restore myusbdrive_clonezilla_disk_2017_05_18 sdd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### common error
|
|
|
|
- Use **fsck** command to check and repair if you get this type of error
|
2017-05-18 09:59:55 +00:00
|
|
|
----
|
2017-05-18 09:55:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Partclone fail, please check /var/log/partclone.log
|
|
|
|
# Failed to use partclone program to save or restore an image!
|
|
|
|
cat /var/log/partclone.log
|
|
|
|
|
|
|
|
Partclone v0.2.89 http://partclone.org
|
|
|
|
Starting to clone device (/dev/sdd1) to image (-)
|
|
|
|
Reading Super Block
|
|
|
|
extfsclone.c: FS has been mounted 20 times without being checked
|
|
|
|
|
|
|
|
# Force check
|
|
|
|
lsblk
|
|
|
|
sudo fsck.ext3 /dev/sdd1
|
|
|
|
|
|
|
|
|
|
|
|
### references
|
|
|
|
- https://www.youtube.com/watch?v=z0WBIOtj5Fo
|
|
|
|
- **format2usb** tutorial https://www.youtube.com/watch?v=7txO1cdNJsQ
|
|
|
|
- http://clonezilla.org/
|
|
|
|
|
|
|
|
### contact
|
|
|
|
|
|
|
|
_ _ _ _
|
|
|
|
__ _ ___ | |_| |__ | | ___| |_ _ _
|
|
|
|
/ _` |/ _ \| __| '_ \| |/ _ \ __| | | |
|
|
|
|
| (_| | (_) | |_| |_) | | __/ |_| |_| |
|
|
|
|
\__, |\___/ \__|_.__/|_|\___|\__|\__,_|
|
|
|
|
|___/
|
|
|
|
|
|
|
|
- http://www.youtube.com/user/gotbletu
|
|
|
|
- https://twitter.com/gotbletu
|
|
|
|
- https://plus.google.com/+gotbletu
|
|
|
|
- https://github.com/gotbletu
|
|
|
|
- gotbletu@gmail.com
|
|
|
|
|
|
|
|
|