This commit is contained in:
usman@cyberpersons.com
2023-03-09 21:09:13 +05:00
parent 434836a2d8
commit ba8b63df6f
2 changed files with 44 additions and 44 deletions

View File

@@ -123,7 +123,7 @@ pass = {ObsecurePassword}
command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}/config.json' command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}/config.json'
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
command = f'rustic -r {self.repo} backup {self.FinalPathRuctic}/config.json --password ""' command = f'rustic -r {self.repo} backup {self.FinalPathRuctic}/config.json --json --password "" 2>/dev/null'
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n')) result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
try: try:
@@ -147,12 +147,11 @@ pass = {ObsecurePassword}
snapshots= f'{snapshots} {snapshot}' snapshots= f'{snapshots} {snapshot}'
command = f'rustic -r {self.repo} merge {snapshots} --password "" --json 2>/dev/null'
command = f'rustic -r {self.repo} merge {snapshots} --password ""'
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n')) result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
command = f'rustic -r {self.repo} forget {snapshots} --password ""' command = f'rustic -r {self.repo} forget {snapshots} --password ""'
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n')) result = ProcessUtilities.outputExecutioner(command, self.website.externalApp, True)
def InitiateBackup(self): def InitiateBackup(self):
@@ -360,11 +359,11 @@ pass = {ObsecurePassword}
return 0 return 0
self.UpdateStatus('Website data backup completed successfully..,70', CPBackupsV2.RUNNING) self.UpdateStatus('Website data backup completed successfully..,70', CPBackupsV2.RUNNING)
if self.data['BackupEmails']: # if self.data['BackupEmails']:
self.UpdateStatus('Backing up emails..,75', CPBackupsV2.RUNNING) # self.UpdateStatus('Backing up emails..,75', CPBackupsV2.RUNNING)
if self.BackupEmailsRustic() == 0: # if self.BackupEmailsRustic() == 0:
return 0 # return 0
self.UpdateStatus('Emails backup completed successfully..,85', CPBackupsV2.RUNNING) # self.UpdateStatus('Emails backup completed successfully..,85', CPBackupsV2.RUNNING)
### Finally change the backup rustic folder to the website user owner ### Finally change the backup rustic folder to the website user owner
@@ -452,49 +451,50 @@ pass = {ObsecurePassword}
CurrentDBPath = f"{self.FinalPathRuctic}/{key}.sql" CurrentDBPath = f"{self.FinalPathRuctic}/{key}.sql"
DBResult = mysqlUtilities.createDatabaseBackup(key, self.FinalPathRuctic) DBResult, SnapID = mysqlUtilities.createDatabaseBackup(key, self.FinalPathRuctic, 1, self.repo, self.website.externalApp)
if DBResult == 1: if DBResult == 1:
self.snapshots.append(SnapID)
command = f'chown {self.website.externalApp}:{self.website.externalApp} {CurrentDBPath}' #command = f'chown {self.website.externalApp}:{self.website.externalApp} {CurrentDBPath}'
ProcessUtilities.executioner(command) #ProcessUtilities.executioner(command)
## Now pack config into same thing ## Now pack config into same thing
#command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}/config.json' #command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}/config.json'
#ProcessUtilities.executioner(command) #ProcessUtilities.executioner(command)
command = f'rustic -r {self.repo} backup {CurrentDBPath} --password "" --json 2>/dev/null' # command = f'rustic -r {self.repo} backup {CurrentDBPath} --password "" --json 2>/dev/null'
print(f'db command rustic: {command}') # print(f'db command rustic: {command}')
result = json.loads( # result = json.loads(
ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n')) # ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
#
try: # try:
SnapShotID = result['id'] ## snapshot id that we need to store in db # SnapShotID = result['id'] ## snapshot id that we need to store in db
files_new = result['summary']['files_new'] ## basically new files in backup # files_new = result['summary']['files_new'] ## basically new files in backup
total_duration = result['summary']['total_duration'] ## time taken # total_duration = result['summary']['total_duration'] ## time taken
#
self.snapshots.append(SnapShotID) # self.snapshots.append(SnapShotID)
#
### Config is saved with each database, snapshot of config is attached to db snapshot with parent # ### Config is saved with each database, snapshot of config is attached to db snapshot with parent
#
#self.BackupConfig(SnapShotID) # #self.BackupConfig(SnapShotID)
#
command = f'chown cyberpanel:cyberpanel {self.FinalPathRuctic}' # command = f'chown cyberpanel:cyberpanel {self.FinalPathRuctic}'
ProcessUtilities.executioner(command) # ProcessUtilities.executioner(command)
#
except BaseException as msg: # except BaseException as msg:
self.UpdateStatus(f'Backup failed as no snapshot id found, error: {str(msg)}', # self.UpdateStatus(f'Backup failed as no snapshot id found, error: {str(msg)}',
CPBackupsV2.FAILED) # CPBackupsV2.FAILED)
return 0 # return 0
#
#
for dbUsers in value: # for dbUsers in value:
print(f'User: {dbUsers["user"]}, Host: {dbUsers["host"]}, Pass: {dbUsers["password"]}') # print(f'User: {dbUsers["user"]}, Host: {dbUsers["host"]}, Pass: {dbUsers["password"]}')
#
command = f'rm -f {CurrentDBPath}' # command = f'rm -f {CurrentDBPath}'
ProcessUtilities.executioner(command) # ProcessUtilities.executioner(command)
else: else:
command = f'rm -f {CurrentDBPath}' command = f'rm -f {CurrentDBPath}'

View File

@@ -245,7 +245,7 @@ class mysqlUtilities:
return str(msg) return str(msg)
@staticmethod @staticmethod
def createDatabaseBackup(databaseName, tempStoragePath, rustic=0, RusticRepoName = None): def createDatabaseBackup(databaseName, tempStoragePath, rustic=0, RusticRepoName = None, externalApp = None):
try: try:
passFile = "/etc/cyberpanel/mysqlPassword" passFile = "/etc/cyberpanel/mysqlPassword"
@@ -313,7 +313,7 @@ password=%s
else: else:
SHELL = True SHELL = True
command = f'mysqldump --defaults-extra-file=/home/cyberpanel/.my.cnf -u {mysqluser} --host={mysqlhost} --port {mysqlport} --add-drop-table --allow-keywords --complete-insert --quote-names --skip-comments {databaseName} | rustic -r {RusticRepoName} backup --stdin-filename {databaseName}.sql --password "" --json 2>/dev/null' command = f'mysqldump --defaults-extra-file=/home/cyberpanel/.my.cnf -u {mysqluser} --host={mysqlhost} --port {mysqlport} --add-drop-table --allow-keywords --complete-insert --quote-names --skip-comments {databaseName} | sudo -u {externalApp} rustic -r {RusticRepoName} backup --stdin-filename {databaseName}.sql - --password "" --json 2>/dev/null'
if os.path.exists(ProcessUtilities.debugPath): if os.path.exists(ProcessUtilities.debugPath):
logging.CyberCPLogFileWriter.writeToFile(command) logging.CyberCPLogFileWriter.writeToFile(command)