Tool to simply migrate from rsync+ssh to rsync+btrfs+ssh
This commit is contained in:
		
							parent
							
								
									34a918294f
								
							
						
					
					
						commit
						78e09a1d23
					
				
							
								
								
									
										39
									
								
								samples/migrate_rsync_to_btrfs.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								samples/migrate_rsync_to_btrfs.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
#!/usr/bin/python
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
import subprocess
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
backups = [ "ns3-test-etc-bind"]
 | 
			
		||||
backup_base_dir = "/backup/data/"
 | 
			
		||||
backup_retention_time=60
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if not os.path.isdir("/backup/data/empty/"):
 | 
			
		||||
  os.mkdir("/backup/data/empty/")
 | 
			
		||||
for backup in backups:
 | 
			
		||||
    base_dir = os.path.join(backup_base_dir,backup)
 | 
			
		||||
    dest_dir = os.path.join(base_dir, 'last_backup')
 | 
			
		||||
    if not os.path.isdir(dest_dir):              
 | 
			
		||||
        cmd = "/sbin/btrfs subvolume create %s"%dest_dir
 | 
			
		||||
        print 'btrfs subvolume create "%s"' %dest_dir
 | 
			
		||||
        print subprocess.check_output(cmd, shell=True)
 | 
			
		||||
 | 
			
		||||
    if  len(os.listdir(dest_dir)) == 0:
 | 
			
		||||
	list_backups  =  sorted([os.path.join(base_dir, f) for f in os.listdir(base_dir)], key=os.path.getctime)
 | 
			
		||||
	recent_backup  =  list_backups[-2]
 | 
			
		||||
	print "The most recent backup : " + recent_backup
 | 
			
		||||
 	print "Initial copy"
 | 
			
		||||
	#cmd =  'rsync -rt --stats --delete-excluded --numeric-ids -P -lpgoD --protect-args  "%s"/ "%s"' % ( recent_backup, dest_dir)
 | 
			
		||||
	cmd =  'cp -v -a --reflink=always   "%s"/* "%s"' % ( recent_backup, dest_dir)
 | 
			
		||||
	print "Runinig %s " % cmd
 | 
			
		||||
        print subprocess.check_output(cmd, shell=True)
 | 
			
		||||
    if  len(os.listdir(base_dir)) > backup_retention_time:
 | 
			
		||||
	for folder in sorted([os.path.join(base_dir, f) for f in os.listdir(base_dir)], key=os.path.getctime)[0:len(os.listdir(base_dir)) -  (backup_retention_time )]:
 | 
			
		||||
		#cmd = 'rsync --dry-run -av --del /backup/data/empty/ "%s/"' % folder 
 | 
			
		||||
		cmd = 'rsync  -av --del /backup/data/empty/ "%s/"' % folder 
 | 
			
		||||
		print "Runinig %s " % cmd
 | 
			
		||||
        	print subprocess.check_output(cmd, shell=True)
 | 
			
		||||
		os.rmdir(folder)
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user