Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- iso=/path/to/isoimage #e.g. iso=~/Downloads/ubuntu-16.04-desktop-amd64.iso
- s=/mnt/isoimage #Source mount point for ISO files (via loop file system)
- t=/media/USBRoot #Target mount point for USB files in partition #1
- dev=/dev/sd? #set the "?" to your USB drive letter, e.g. /dev/sdb
- sudo dd if=/dev/zero of=$dev #bs=2048 is optional and doesn't seem to matter
- dd: writing to ‘/dev/sdb’: No space left on device
- 30326785+0 records in
- 30326784+0 records out
- 15527313408 bytes (16 GB) copied, 4099.2 s, 3.8 MB/s
- sudo umount ${dev}1
- sudo umount ${dev}2
- **sudo fdisk $dev**
- **o** [create partition map], and then
- n (p) (1) (2048) 27343750 [new partition #1]
- t c [change partition type to type c, or W95 FAT32], and
- n (p) (2) (default) (default) [new partition #2]
- t 2 83 [type 83 or linux], then
- a (2) [set [toggle] the bootable flag], and
- p [check new table], and finally
- Disk /dev/sdb: 14.5 GiB, 15527313408 bytes, 30326784 sectors
- Units: sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disklabel type: dos
- Disk identifier: 0xa42995f9
- Device Boot Start End Sectors Size Id Type
- /dev/sdb1 2048 27343750 27341703 13G c W95 FAT32 (LBA)
- /dev/sdb2 * 27344896 30326783 2981888 1.4G 83 Linux
- w [write the partition table to the usb drive]
- The partition table has been altered.
- Calling ioctl() to re-read partition table.
- Syncing disks.
- The partition table has been altered.
- Calling ioctl() to re-read partition table.
- Re-reading the partition table failed.: Device or resource busy
- The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
- sudo dd if=$iso of=${dev}2
- sudo mkfs.vfat -F 32 -c ${dev}1
- sudo mkdir -p $t
- sudo mount ${dev}1 $t
- sudo grub-install --no-floppy --root-directory=$t $dev
- sudo mkdir -p $s
- sudo mount -o loop $iso $s
- sudo cp $s/casper/{vmlinuz.efi,initrd.lz} $t/boot/
- sudo dd if=/dev/zero of=$t/casper-rw bs=1M count=1024 #takes a long time
- sudo mkfs.ext3 -F $t/casper-rw
- sudo nano $t/boot/grub/grub.cfg
- echo LOADING USB DRIVE
- echo
- echo To continue press any key
- echo To abort press ^-alt-delete
- echo
- read
- echo Proceeding...
- set default=0
- set timeout=10
- set title="Ubuntu (Live)"
- set root=(hd0,msdos1)
- linux /boot/vmlinuz.efi boot=casper file=/preseed/ubuntu.seed persistent ro splash quiet
- echo vmlinuz.efi loaded
- initrd /boot/initrd.lz
- echo initrd.lz loaded
- echo
- echo Grub done. Booting...
- boot
- sync
- sudo umount $s; sudo rmdir $s
- sudo umount $t; sudo rmdir $t
- #!/bin/bash
- #Usage:
- #
- # mybackup - show list of current backups
- # myrestore - ''
- #
- # mybackup <machine> <BackupFolderName> - machine: love2d or sharon-pc
- # myrestore <machine> <BackupFolderName> - by convention name is 'nn-descriptiveName' (so it sorts by date)
- #################################################################
- #################################################################
- ### PARTITIONS ######################
- #Partition labels (also used for mount point folder names):
- # Note: use labels rather than UUID as they might be more controllable.
- BackupDrive='Linux backup' # USB backup drive (I removed space from 'name' & it removed it from 'label')
- BackupBase="$BackupDrive/Backups" # Backup base folder directory & name
- SubDir="files"
- ### PARTITIONS LABEL HELP:
- #lsblk -o +label gives (note older method was blkid, but this suggests we use lsblk):
- #NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT LABEL
- #sda 8:0 0 465.8G 0 disk
- #├─sda1 8:1 0 199M 0 part SYSTEM
- #├─sda2 8:2 0 288.1G 0 part
- #├─sda3 8:3 0 1K 0 part
- #├─sda4 8:4 0 29.3G 0 part Shared
- #├─sda5 8:5 0 23.3G 0 part d8root
- #├─sda6 8:6 0 119.5G 0 part d8home
- #└─sda7 8:7 0 5.4G 0 part [SWAP]
- #sdc 8:32 0 3.7T 0 disk
- #├─sdc1 8:33 0 128M 0 part
- #├─sdc2 8:34 0 2.7T 0 part /media/ubuntu/Seagate Backup Plus Drive Seagate Backup Plus Drive
- #└─sdc3 8:35 0 976.6G 0 part Linux backup
- ### MOUNTING 1of2 ######################
- sudo umount "/mnt/$BackupDrive">& /dev/null # --- cleanup from prior failed attempt:
- sudo mkdir "/mnt/$BackupDrive">& /dev/null; sudo mount -L "$BackupDrive" "/mnt/$BackupDrive" -o defaults,suid >& /dev/null #Allow to set user owner of files
- ########################################################################
- ### FUNCTIONS #################################################################
- ####################
- function usage { echo; echo "Usage: ${0##*/} [machine name: Love2d|Sharon-pc] [BackupFolderName]";echo;}
- ####################
- ####################
- #If parameter just show dirs for that machine, else show for both
- function myls {
- echo -n "'$1' existing backups:"
- if [ -d "$2" ]; then echo; ls -lFgG "$2" |grep -v ^total |grep ' [0-9][0-9]-' |sed 's/..................//'; else echo ' (none)'; fi;
- }
- ##################
- function currentbackups {
- if [ "$1" ]; then
- myls "$1" "/mnt/$BackupBase/$1/$SubDir"
- else
- myls 'Love2d' "/mnt/$BackupBase/Love2d/$SubDir"
- echo
- myls 'Sharon-pc' "/mnt/$BackupBase/Sharon-pc/$SubDir"
- echo
- fi
- }
- ###################
- function badmachine { echo "Machine type '$1' is invalid.";}
- ###################
- function cleanup {
- # echo "--- cleaning up --------------------------------------"
- sudo umount "/mnt/$BackupDrive"
- }
- ########################################################################
- ########################################################################
- ### CHECK INPUTS #######################################################
- #Check if backup name paramter exists:
- if [ $# = 0 ]; then usage; cleanup; exit; fi
- if [ $# = 1 ]; then if [ "$1" != "Love2d" -a "$1" != "Sharon-pc" ]; then badmachine "$1"; usage; else usage; currentbackups "$1"; fi; cleanup; exit; fi
- if [ $# = 2 ]; then if [ "$1" != "Love2d" -a "$1" != "Sharon-pc" ]; then badmachine "$1"; usage; cleanup; exit; fi; fi
- ### MOUNTING 2of2 ######################
- if [ "$1" = 'Love2d' ]; then
- MyHome='d8home' # Love2 Debian /home partition name
- MyRoot='d8root' # Love2 Debian / (root) partition name
- MyShared='Shared' # Love2 Debian Shared partition name
- sudo umount "/mnt/$MyRoot" >& /dev/null # --- cleanup from prior failed attempt:
- sudo umount "/mnt/$MyHome" >& /dev/null #
- sudo umount "/mnt/$MyShared" >& /dev/null #
- sudo mkdir "/mnt/$MyRoot" >& /dev/null; sudo mount -L "$MyRoot" "/mnt/$MyRoot" >& /dev/null
- sudo mkdir "/mnt/$MyHome" >& /dev/null; sudo mount -L "$MyHome" "/mnt/$MyHome" >& /dev/null
- sudo mkdir "/mnt/$MyShared" >& /dev/null; sudo mount -L "$MyShared" "/mnt/$MyShared" >& /dev/null
- else
- # MyHome='uhome' # Love2 Ubuntu /home partition name
- # MyRoot='uroot' # Love2 Ubuntu / (root) partition name
- MyHome='a41eaa3e-bd31-4ebc-86d4-cf8ed5f3e779' # Love2 Ubuntu /home partition name
- MyRoot='f3b7424c-0144-42a6-8488-62fbee94d245' # Love2 Ubuntu / (root) partition name
- sudo umount "/mnt/$MyRoot" >& /dev/null # --- cleanup from prior failed attempt:
- sudo umount "/mnt/$MyHome" >& /dev/null #
- #sudo mkdir "/mnt/$MyRoot" >& /dev/null; sudo mount -L "$MyRoot" "/mnt/$MyRoot" >& /dev/null
- #sudo mkdir "/mnt/$MyHome" >& /dev/null; sudo mount -L "$MyHome" "/mnt/$MyHome" >& /dev/null
- sudo mkdir "/mnt/$MyRoot" >& /dev/null; sudo mount -U "$MyRoot" "/mnt/$MyRoot" >& /dev/null
- sudo mkdir "/mnt/$MyHome" >& /dev/null; sudo mount -U "$MyHome" "/mnt/$MyHome" >& /dev/null
- fi
- #=================================================================
- BackupDir="$BackupBase/$1/$SubDir/$2" # /dir/BackupFolderName
- #rSync stuff:
- MyRsync="sudo rsync -aAXv --delete"
- RootExclude=" --exclude={"/dev/*","/lost+found","/media/*","/mnt/*","/proc/*","/run/*","/sys/*","/tmp/*"}"
- HomeExclude=" --exclude='*cache*'" #this does not work
- if [ "${0##*/}" = "mybackup" ]; then
- echo backing up...
- sudo mkdir -p "/mnt/$BackupDir/root" # Making directories to save backup to
- sudo mkdir -p "/mnt/$BackupDir/home"
- echo "--- Backing up: / -----------------------------------"
- $MyRsync $RootExclude "/mnt/$MyRoot/" "/mnt/$BackupDir/root/"
- echo "--- Backing up: /home -------------------------------"
- $MyRsync $HomeExclude "/mnt/$MyHome/" "/mnt/$BackupDir/home/"
- if [ "$MyShared" ]; then #no shared partion on Sharon's machine
- sudo mkdir -p "/mnt/$BackupDir/shared"
- echo "--- Backing up: Shared ------------------------------"
- $MyRsync "/mnt/$MyShared/" "/mnt/$BackupDir/shared/"
- fi
- else
- # Confirm
- read -p "YOU ARE ABOUT TO OVERWRITE YOUR PARTITIONS - CONFIRM (y/N)?" -n 1 -r; echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Aborting.";exit; fi
- echo;
- read -p "DANGER! Really overwrite your hard disk partitions? (y/N)?" -n 1 -r; echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Aborting.";exit; fi
- echo "--- Restoring: / -----------------------------------"
- $MyRsync "/mnt/$BackupDir/root/" "/mnt/$MyRoot"
- echo "--- Restoring: /home -------------------------------"
- $MyRsync "/mnt/$BackupDir/home/" "/mnt/$MyHome"
- if [ "$MyShared" ]; then #no shared partion on Sharon's machine
- echo "--- Restoring: Shared ------------------------------"
- $MyRsync "/mnt/$BackupDir/shared/" "/mnt/$MyShared"
- fi
- fi
- cleanup
- sudo umount "/mnt/$MyRoot" ;sudo rmdir "/mnt/$MyRoot"
- sudo umount "/mnt/$MyHome" ;sudo rmdir "/mnt/$MyHome"
- if [ "$MyShared" ]; then #no shared partion on Sharon's machine
- sudo umount "/mnt/$MyShared" ;sudo rmdir "/mnt/$MyShared"
- fi
- echo "=== DONE. ============================================"
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement