talksr Posted March 25, 2024 Posted March 25, 2024 Hi, Just wondering if anyone has any recommendations for software (if free, even better) that would take an image of an entire system. There are a small number of computers in the school it would be really handy to be able to take an entire image of such that if the SSD failed, we could just restore the image back onto a same sized replacement SSD. The main example would be a unique system like the site manager's computer which is not domain joned, is independent but has lots of not very common software such as various CCTV packages to access various NVRs, fire panel control software, access control software etc. It has been years since I have had the need to clone a system as we just use SCCM/WDS of Autopilot these days but for these one off systems, I think it would still be handy to take an entire backup copy now and then as the time involved in starting fresh and obtaining, installing and configuring some of this software would be quite time consuming. Any suggestions would be greatly appreciated:)
Steve21 Posted March 25, 2024 Posted March 25, 2024 If you're just talking a re-image with new HDD/SSD, the basic windows image backup should work fine. If you're talking migrating to new hardware etc etc I'd use something like an Acronis clone Steve 1
jthompson Posted March 25, 2024 Posted March 25, 2024 I've never used it, so this might be a duff suggestion, but could Clonezilla do this for you, for free?
Olliedawg Posted March 25, 2024 Posted March 25, 2024 (edited) i've used clonezilla in the past to clone images, fairly simple, but not as simple as some software about which has a proper GUI edit : I imaged a load of the DfE laptops using Clonezilla, as majority we received didnt support PXE boot (grrrr!!!), or didn't like the USB to ethernet adapters we had Edited March 25, 2024 by Olliedawg
DalekSec Posted March 25, 2024 Posted March 25, 2024 Used to use Disk2VHD back in day, still use it time to time when moving physical to virtual and does the job. But this is a 1 run jobbie not a scheduled one.
dhicks Posted March 25, 2024 Posted March 25, 2024 Just wondering if anyone has any recommendations for software (if free, even better) that would take an image of an entire system. Veeam "Community Edition" (free version) should do for up to 10 backup targets - I've not actually used it to backup individual PCs, but I assume it works as well for that as it does for virtual machines. If it's any help, for specialised software like fire panel software, etc, we tend to install that to a remote desktop machine and have the appropriate user log in to that.
MYK-IT Posted March 25, 2024 Posted March 25, 2024 (edited) Could get yourself a standalone HDD/SSD duplicator (with button press copy!): https://www.amazon.co.uk/Docking-Station-FIDECO-Offline-Function/dp/B07D8S7RN7 Obviously, costs involved for the extra SSD(s)! Edited March 25, 2024 by MYK-IT
hardtailstar Posted March 25, 2024 Posted March 25, 2024 Could get yourself a standalone HDD/SSD duplicator (with button press copy!): https://www.amazon.co.uk/Docking-Station-FIDECO-Offline-Function/dp/B07D8S7RN7 Obviously, costs involved for the extra SSD(s)! This! We used one of these in a primary school I used to work in. Due to poor IT spend and slow network. It was quicker to copy from a master image then rename, adjust settings and join the network. 1
MatthewL Posted March 26, 2024 Posted March 26, 2024 Clonezilla. You can boot from CD/USB and then dump the file to a network location or hard drive.
Jaan Posted March 26, 2024 Posted March 26, 2024 As mentioned above, Veeam community edition 100% https://www.veeam.com/virtual-machine-backup-solution-free.html
k-strider Posted March 28, 2024 Posted March 28, 2024 Clonezilla we used to back in the day have it setup on a 1TB portable hdd as a boot device with a large ext4 partition to store the images on. As others have said not the simplest to use but does work really great once you get your head around the interface
CHiLL Posted March 28, 2024 Posted March 28, 2024 We use Veeam Community Edition to back up our technician workstations and a physical DC. We also use the paid version of Veeam B&R for our VMs, though they are managed on two different servers and the backup files are on the same repository.
MartinByard Posted April 2, 2024 Posted April 2, 2024 (edited) We've created a couple of task sequences in SCCM which can backup and restore devices using DISM with the /ffu option to use full disk images. The backup TS starts from within Windows and suspends bitlocker, reboots into PXE then runs the following Powershell script (slightly edited) which pops up a windows form to ask where and what to call the backup file, abd then runs the backup command: function button { ###################Load Assembly for creating form & button###### [void][system.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) [void][system.Reflection.Assembly]::LoadWithPartialName(“Microsoft.VisualBasic”) #####Define the form size & placement $form = New-Object “System.Windows.Forms.Form”; $form.Width = 650; $form.Height = 250; $form.Text = $title; $form.StartPosition = [system.Windows.Forms.FormStartPosition]::CenterScreen; ##############Define text label1 $textLabel1 = New-Object “System.Windows.Forms.Label”; $textLabel1.Left = 25; $textLabel1.Top = 15; $textLabel1.Width = 175; $textLabel1.Height = 50; $textLabel1.Text = "Please enter the desired filename for the backup"; ##############Define text label2 $textLabel2 = New-Object “System.Windows.Forms.Label”; $textLabel2.Left = 25; $textLabel2.Top = 70; $textLabel2.Width = 175; $textLabel2.Height = 15; $textLabel2.Text = "Please enter the desired location for the backup"; ##############Define text label3 $textLabel3 = New-Object “System.Windows.Forms.Label”; $textLabel3.Left = 25; $textLabel3.Top = 100; $textLabel3.Width = 600; $textLabel3.Height = 25; $textLabel3.Text = "Examples - \\\MasterImages - \\\Builds\PCBackups"; ##############Define text label5 $textLabel5 = New-Object “System.Windows.Forms.Label”; $textLabel5.Left = 50; $textLabel5.Top = 160; $textLabel5.Width = 350; $textlabel5.Height = 50; $textLabel5.Text = “If you are not expecting to see this screen, please contact the IT Service Desk on x22222”; ############Define text box1 for input $textBox1 = New-Object “System.Windows.Forms.TextBox”; $textBox1.Left = 225; $textBox1.Top = 15; $textBox1.width = 200; ############Define text box2 for input $textBox2 = New-Object “System.Windows.Forms.TextBox”; $textBox2.Left = 225; $textBox2.Top = 70; $textBox2.width = 200; #############Define default values for the input boxes $textBox1.Text = ""; $textBox2.Text = "\\\MasterImages"; #############define OK button $button = New-Object “System.Windows.Forms.Button”; $button.Left = 425; $button.Top = 120; $button.Width = 75; $button.Text = “OK”; ############# This is when you have to close the form after getting values $eventHandler = [system.EventHandler]{ $global:filename = $TextBox1.Text $TextBox1.Text $global:location = $TextBox2.Text $TextBox2.Text $form.Close(); }; $button.Add_Click($eventHandler); #############Add controls to all the above objects defined $form.Controls.Add($button); $form.Controls.Add($textLabel1); $form.Controls.Add($textLabel2); $form.Controls.Add($textLabel3); $form.Controls.Add($textLabel5); $form.Controls.Add($textBox1); $form.Controls.Add($textBox2); $ret = $form.ShowDialog(); #################return values return $TextBox1.Text, $TextBox2.Text } [system.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) #Hide the progress dialog $TSProgressUI = new-object -comobject Microsoft.SMS.TSProgressUI $TSProgressUI.CloseProgressDialog() # Pop up device backup name message [system.Windows.Forms.MessageBox]::Show("Please enter the desired name and location of the backup file", "Device Backup TS") $return = button # Capture device backup name $BackupName1 = $global:filename $BackupName2 = $BackupName1 + "D" $BackupLocation1 = $global:location # Set actual TS variable $tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment $tsenv.value("BackupName") = $BackupName1 $tsenv.value("BackupLocation") = $BackupLocation1 $Server = ($BackupLocation1 -split '\\')[2] $Share = ($BackupLocation1 -split '\\')[3] $NetworkPath = "\\" + $Server + "\" + $Share Write-Host "Server is $Server" Write-Host "Share is $Share" Write-Host "NetworkPath is $NetworkPath" Write-Host "BackupName1 is $BackupName1" Write-Host "BackupLocation1 is $BackupLocation1" $tsenv.value("NetworkPath") = $NetworkPath $TSName = $tsenv.value("_SMSTSPackageName") # Create auditing variables $hostname = hostname $macaddress1 = (get-wmiobject -class "Win32_NetworkAdapterConfiguration" | Where{$_.IpEnabled -Match "True"} | Where{ $_.IPADDRESS -like "10.*.*.*" } | select MACAddress).macaddress $system = get-wmiobject win32_computersystem [string]$DT = date $nic = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE $ipaddress = ($NIC.IPAddress[0]) net use \\ /u: # Specify the path to the audit file, and the string to output to it [string]$audit1 = "\\\PCbackups\pcbackups.log" [string]$auditinfo1 = $macaddress1 + "," + $DT + "," + $ipaddress + "," + $hostname + "," + $system.manufacturer + "," + $system.model + ",JUST STARTED " + $TSName + " capturing FFU to " + $BackupName1 + ".wim" + ",on share" + $NetworkPath + " with full file path of " + $BackupLocation1 # Add audit string to the audit file $auditinfo1 | Out-File $audit1 -Append -Encoding ASCII Start-Sleep 2 net use \\ /d net use $NetworkPath /u: Start-Sleep 5 Start-Process dism -ArgumentList "/capture-ffu /imagefile:$BackupLocation1\$BackupName1.wim /capturedrive:\\.\PhysicalDrive0 /name:$BackupName1" -Wait Start-Sleep 10 net use $NetworkPath /d net use \\ /u: [string]$audit2 = "\\\PCbackups\pcbackups.log" [string]$auditinfo2 = $macaddress1 + "," + $DT + "," + $ipaddress + "," + $hostname + "," + $system.manufacturer + "," + $system.model + ",JUST FINISHED " + $TSName + " capturing FFU to " + $BackupName1 + ".wim" + ",on share" + $NetworkPath + " with full file path of " + $BackupLocation1 $auditinfo2 | Out-File $audit2 -Append -Encoding ASCII Start-Sleep 2 net use \\ /d [system.Windows.Forms.MessageBox]::Show("Device has successfully been captured to $BackupLocation1", "Device Backup TS") exit 0 The restore TS is only available in PXE and formats the disk and then runs the following powershell which pops up a windows form to ask where and what the backup file to restore is, and then runs the restore command: function button { ###################Load Assembly for creating form & button###### [void][system.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) [void][system.Reflection.Assembly]::LoadWithPartialName(“Microsoft.VisualBasic”) #####Define the form size & placement $form = New-Object “System.Windows.Forms.Form”; $form.Width = 650; $form.Height = 250; $form.Text = $title; $form.StartPosition = [system.Windows.Forms.FormStartPosition]::CenterScreen; ##############Define text label1 $textLabel1 = New-Object “System.Windows.Forms.Label”; $textLabel1.Left = 25; $textLabel1.Top = 15; $textLabel1.Width = 175; $textLabel1.Height = 50; $textLabel1.Text = "Please enter the desired filename to restore"; ##############Define text label2 $textLabel2 = New-Object “System.Windows.Forms.Label”; $textLabel2.Left = 25; $textLabel2.Top = 70; $textLabel2.Width = 175; $textLabel2.Height = 15; $textLabel2.Text = "Please enter the desired location to restore from"; ##############Define text label3 $textLabel3 = New-Object “System.Windows.Forms.Label”; $textLabel3.Left = 25; $textLabel3.Top = 100; $textLabel3.Width = 600; $textLabel3.Height = 25; $textLabel3.Text = "Examples - \\\MasterImages - \\\Builds\PCBackups"; ##############Define text label5 $textLabel5 = New-Object “System.Windows.Forms.Label”; $textLabel5.Left = 50; $textLabel5.Top = 160; $textLabel5.Width = 350; $textlabel5.Height = 50; $textLabel5.Text = “If you are not expecting to see this screen, please contact the IT Service Desk on x22222”; ############Define text box1 for input $textBox1 = New-Object “System.Windows.Forms.TextBox”; $textBox1.Left = 225; $textBox1.Top = 15; $textBox1.width = 200; ############Define text box2 for input $textBox2 = New-Object “System.Windows.Forms.TextBox”; $textBox2.Left = 225; $textBox2.Top = 70; $textBox2.width = 200; #############Define default values for the input boxes $textBox1.Text = ""; $textBox2.Text = "\\\MasterImages"; #############define OK button $button = New-Object “System.Windows.Forms.Button”; $button.Left = 425; $button.Top = 120; $button.Width = 75; $button.Text = “OK”; ############# This is when you have to close the form after getting values $eventHandler = [system.EventHandler]{ $global:filename = $TextBox1.Text $TextBox1.Text $global:location = $TextBox2.Text $TextBox2.Text $form.Close(); }; $button.Add_Click($eventHandler); #############Add controls to all the above objects defined $form.Controls.Add($button); $form.Controls.Add($textLabel1); $form.Controls.Add($textLabel2); $form.Controls.Add($textLabel3); $form.Controls.Add($textLabel5); $form.Controls.Add($textBox1); $form.Controls.Add($textBox2); $ret = $form.ShowDialog(); #################return values return $TextBox1.Text, $TextBox2.Text } [system.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) #Hide the progress dialog $TSProgressUI = new-object -comobject Microsoft.SMS.TSProgressUI $TSProgressUI.CloseProgressDialog() # Pop up device backup name message [system.Windows.Forms.MessageBox]::Show("Please enter the name and location of the backup file to restore", "Device Backup TS") $return = button # Capture device backup name $BackupName1 = $global:filename $BackupName2 = $BackupName1 + "D" $BackupLocation1 = $global:location # Set actual TS variable $tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment $tsenv.value("BackupName") = $BackupName1 $tsenv.value("BackupLocation") = $BackupLocation1 $Server = ($BackupLocation1 -split '\\')[2] $Share = ($BackupLocation1 -split '\\')[3] $NetworkPath = "\\" + $Server + "\" + $Share $tsenv.value("NetworkPath") = $NetworkPath $TSName = $tsenv.value("_SMSTSPackageName") # Create auditing variables $hostname = hostname $macaddress1 = (get-wmiobject -class "Win32_NetworkAdapterConfiguration" | Where{$_.IpEnabled -Match "True"} | Where{ $_.IPADDRESS -like "10.*.*.*" } | select MACAddress).macaddress $system = get-wmiobject win32_computersystem [string]$DT = date $nic = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE $ipaddress = ($NIC.IPAddress[0]) # Specify the path to the audit file, and the string to output to it [string]$audit1 = "\\\PCbackups\pcbackups.log" [string]$auditinfo1 = $macaddress1 + "," + $DT + "," + $ipaddress + "," + $hostname + "," + $system.manufacturer + "," + $system.model + ",JUST STARTED " + $TSName + " restoring " + $BackupName1 + ".wim" + ",on share " + $NetworkPath # Add audit string to the audit file $auditinfo1 | Out-File $audit1 -Append -Encoding ASCII Start-Sleep 2 net use $NetworkPath /u: Start-Process DISM -ArgumentList "/apply-ffu /ImageFile:$BackupLocation1\$BackupName1.wim /ApplyDrive:\\.\PhysicalDrive0" -Wait net use $NetworkPath /d [string]$audit2 = "\\\PCbackups\pcbackups.log" [string]$auditinfo2 = $macaddress1 + "," + $DT + "," + $ipaddress + "," + $hostname + "," + $system.manufacturer + "," + $system.model + ",JUST FINISHED " + $TSName + " restoring " + $BackupName1 + ".wim" + ",on share " + $NetworkPath $auditinfo2 | Out-File $audit2 -Append -Encoding ASCII [system.Windows.Forms.MessageBox]::Show("Device has successfully been restored", "Device Backup TS") exit 0 It's not been used in anger yet, but the etesting i've run on approx half a dozen devices has worked with no problem. Even mixing disk sizes, so restoring onto a bigger disk than it was captured on worked, but it did not automatically resize to fill bigger disks. Edited April 2, 2024 by MartinByard 1
Rob_D Posted April 2, 2024 Posted April 2, 2024 I've used clonezilla a deploy fat images from USB onto PC, worked fine at the time. There's also FOG https://fogproject.org/ which I used briefly before we moved to MDT. These days, if we want to fat image then we use a Startech disk cloner like this one https://www.amazon.co.uk/dp/B00FSVD9PE (we originally got it scrub drives pulled out of old machines) Aomie backup has been pretty good for drive migrations on my home PC, but I've had mixed results using it against a boot drive. https://www.aomeitech.com/aomei-backupper.html
Oaktech Posted April 2, 2024 Posted April 2, 2024 I did this for an organization, not a school - big USB stick, Windows 7 backup and restore a fully built machine, Windows RE tools on the stick, boot it, enter RE, restore the image from the stick, rename and join to domain. I've since moved to Windows Config Designer which allows you to do all of the above and join to a domain. Also worth mentioning autopilot if you have the apropriate devices and Intune - only need to provide a windows image.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now