Bugfix -> Backups to a local remote stopped working due to determine_rsync_backup_link_destination_path()
So like ... fixed it. And stuff.
This commit is contained in:
		
							
								
								
									
										42
									
								
								mikes-backup
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								mikes-backup
									
									
									
									
									
								
							@@ -533,18 +533,21 @@ class MikesBackup:
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		# Get listing info for the full path
 | 
							# Get listing info for the full path
 | 
				
			||||||
		destination_path_full = self.make_full_backup_destination_path()
 | 
							destination_path_full = self.make_full_backup_destination_path()
 | 
				
			||||||
		return_code, stdout, stderr = self.execute_remote_ssh_command([
 | 
							args_full_destination_path_ls = [
 | 
				
			||||||
			"ls",
 | 
								"ls",
 | 
				
			||||||
			"-l",
 | 
								"-l",
 | 
				
			||||||
			"-c",
 | 
								"-c",
 | 
				
			||||||
			"--all",
 | 
								"--all",
 | 
				
			||||||
			"--full-time",
 | 
								"--full-time",
 | 
				
			||||||
			destination_path_full
 | 
								destination_path_full
 | 
				
			||||||
		])
 | 
							]
 | 
				
			||||||
 | 
							if self.is_using_ssh():
 | 
				
			||||||
 | 
								return_code, stdout, stderr = self.execute_remote_ssh_command(args_full_destination_path_ls)
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								return_code, stdout, stderr = self.execute_command(args_full_destination_path_ls)
 | 
				
			||||||
		if return_code != 0:
 | 
							if return_code != 0:
 | 
				
			||||||
			raise Exception("Failed to get listing info for base destination directory")
 | 
								raise Exception("Failed to get listing info for base destination directory")
 | 
				
			||||||
		for match in pattern.finditer(stdout):
 | 
							for match in pattern.finditer(stdout):
 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			name = match.group("name")
 | 
								name = match.group("name")
 | 
				
			||||||
			date = match.group("date")
 | 
								date = match.group("date")
 | 
				
			||||||
			if name == ".":
 | 
								if name == ".":
 | 
				
			||||||
@@ -563,14 +566,18 @@ class MikesBackup:
 | 
				
			|||||||
		# Get listing info for all differential directories
 | 
							# Get listing info for all differential directories
 | 
				
			||||||
		differential_path_base = self.make_remote_differential_backup_path_base()
 | 
							differential_path_base = self.make_remote_differential_backup_path_base()
 | 
				
			||||||
		self.ensure_destination_directory(differential_path_base)
 | 
							self.ensure_destination_directory(differential_path_base)
 | 
				
			||||||
		return_code, stdout, stderr = self.execute_remote_ssh_command([
 | 
							args_differential_destination_path_ls = [
 | 
				
			||||||
			"ls",
 | 
								"ls",
 | 
				
			||||||
			"-l",
 | 
								"-l",
 | 
				
			||||||
			"-c",
 | 
								"-c",
 | 
				
			||||||
			"--all",
 | 
								"--all",
 | 
				
			||||||
			"--full-time",
 | 
								"--full-time",
 | 
				
			||||||
			differential_path_base
 | 
								differential_path_base
 | 
				
			||||||
		])
 | 
							]
 | 
				
			||||||
 | 
							if self.is_using_ssh():
 | 
				
			||||||
 | 
								return_code, stdout, stderr = self.execute_remote_ssh_command(args_differential_destination_path_ls)
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								return_code, stdout, stderr = self.execute_command(args_differential_destination_path_ls)
 | 
				
			||||||
		if return_code != 0:
 | 
							if return_code != 0:
 | 
				
			||||||
			raise Exception("Failed to get listing info for destination differential base directory")
 | 
								raise Exception("Failed to get listing info for destination differential base directory")
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -683,6 +690,29 @@ class MikesBackup:
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		return env
 | 
							return env
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@staticmethod
 | 
				
			||||||
 | 
						def execute_command(command):
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							#
 | 
				
			||||||
 | 
							args = list()
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							# Append the command
 | 
				
			||||||
 | 
							if isinstance(command, str):
 | 
				
			||||||
 | 
								args.append(command)
 | 
				
			||||||
 | 
							elif isinstance(command, list):
 | 
				
			||||||
 | 
								args.extend(command)
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								raise Exception("Unsupported command datatype")
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							# Spawn
 | 
				
			||||||
 | 
							process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
				
			||||||
 | 
							stdout, stderr = process.communicate()
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							stdout = stdout.decode()
 | 
				
			||||||
 | 
							stderr = stderr.decode()
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return process.returncode, stdout, stderr
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	#
 | 
						#
 | 
				
			||||||
	def execute_remote_ssh_command(self, command):
 | 
						def execute_remote_ssh_command(self, command):
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@@ -716,7 +746,7 @@ class MikesBackup:
 | 
				
			|||||||
		else:
 | 
							else:
 | 
				
			||||||
			raise Exception("Unsupported command datatype")
 | 
								raise Exception("Unsupported command datatype")
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		# Spawn SSH in shell
 | 
							# Spawn
 | 
				
			||||||
		process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
							process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | 
				
			||||||
		# process = subprocess.Popen(args)
 | 
							# process = subprocess.Popen(args)
 | 
				
			||||||
		stdout, stderr = process.communicate()
 | 
							stdout, stderr = process.communicate()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user