From e0b71cec6d1e1e23350762e2e62de9158210542d Mon Sep 17 00:00:00 2001 From: bohung Date: Fri, 2 Dec 2022 13:55:21 +0800 Subject: [PATCH] Fix bug. --- app/models/site_server_db_backup.rb | 6 ++++-- app/models/site_server_file_backup.rb | 16 ++++++++++------ lib/tasks/detect_sites.rake | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/app/models/site_server_db_backup.rb b/app/models/site_server_db_backup.rb index 0cd04da..21b5679 100644 --- a/app/models/site_server_db_backup.rb +++ b/app/models/site_server_db_backup.rb @@ -11,8 +11,10 @@ class SiteServerDbBackup field :need_rewrite, type: Boolean, default: true before_save do - if self.changed? - self.need_rewrite = true + unless @skip_callback + if self.changed? + self.need_rewrite = true + end end end def to_crontab_script(return_string=true) diff --git a/app/models/site_server_file_backup.rb b/app/models/site_server_file_backup.rb index 14b1509..7c277da 100644 --- a/app/models/site_server_file_backup.rb +++ b/app/models/site_server_file_backup.rb @@ -15,15 +15,19 @@ class SiteServerFileBackup field :need_rewrite, type: Boolean, default: true before_create do - other_rsnapshot_conf_path = self.class.pluck(:rsnapshot_conf_path) - if other_rsnapshot_conf_path.include?(self.rsnapshot_conf_path) - max_postfix = other_rsnapshot_conf_path.select{|s| s.start_with?('/etc/')}.map{|s| tmp = File.basename(s).split('.conf')[0].match(/\d+/); tmp ? tmp[0].to_i : 0}.max - self.rsnapshot_conf_path = "#{self.rsnapshot_conf_path.split('.conf')[0]}#{max_postfix + 1}.conf" + unless @skip_callback + other_rsnapshot_conf_path = self.class.where(:site_server_id=>self.site_server_id).pluck(:rsnapshot_conf_path) + if other_rsnapshot_conf_path.include?(self.rsnapshot_conf_path) + max_postfix = other_rsnapshot_conf_path.select{|s| s.start_with?('/etc/')}.map{|s| tmp = File.basename(s).split('.conf')[0].match(/\d+/); tmp ? tmp[0].to_i : 0}.max + self.rsnapshot_conf_path = "#{self.rsnapshot_conf_path.split('.conf')[0]}#{max_postfix + 1}.conf" + end end end before_save do - if self.changed? - self.need_rewrite = true + unless @skip_callback + if self.changed? + self.need_rewrite = true + end end end def to_crontab_script diff --git a/lib/tasks/detect_sites.rake b/lib/tasks/detect_sites.rake index 976ed2a..ecbaf92 100644 --- a/lib/tasks/detect_sites.rake +++ b/lib/tasks/detect_sites.rake @@ -33,6 +33,7 @@ namespace :create_site do update_thread_infos(e.to_s) next end + @no_stdout = true Net::SSH.start(@site_server.ip , @site_server.account , password: @site_server.password) do |ssh| certbot_path = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'which certbot certbot-auto'",false,true).strip.split("\n")[0] @site_server.has_certbot = certbot_path.present? @@ -192,7 +193,7 @@ namespace :create_site do path = '/home/backup/orbit' end backup_dir_subinfo = backup_dir_info[rsnapshot_conf_path] - tmp = file_backups_group[rsnapshot_conf_path] + tmp = file_backups_group[rsnapshot_conf_path].to_a unused_period = part_retain_settings.map{|period_text, retain_count| SiteServerFileBackup::PeriodsTypes.index(period_text).to_i} - tmp.map{|time, rsnapshot_conf_path, period| period} unused_retain_settings = unused_period.map{|period| [period, part_retain_settings[SiteServerFileBackup::PeriodsTypes[period]]]} backup_dir_subinfo.each do |backup_dir, backup_prefix| @@ -200,8 +201,11 @@ namespace :create_site do file_backup_data = {:site_server=>@site_server, :disable=>true, :period=>period, :path=>path, :retain_count=>retain_count, :rsnapshot_conf_path=>rsnapshot_conf_path, :backup_dir=>backup_dir, :backup_prefix=>backup_prefix} file_backup = SiteServerFileBackup.where(file_backup_data.except(:disable)).first if file_backup.nil? - file_backup = SiteServerFileBackup.create(file_backup_data) + file_backup = SiteServerFileBackup.new(file_backup_data) + file_backup.instance_variable_set(:@skip_callback, true) + file_backup.save else + file_backup.instance_variable_set(:@skip_callback, true) file_backup.update_attributes(file_backup_data) end file_backup_ids << file_backup.id @@ -213,7 +217,10 @@ namespace :create_site do file_backup = SiteServerFileBackup.where(file_backup_data.except(:disable)).first if file_backup.nil? file_backup = SiteServerFileBackup.create(file_backup_data) + file_backup.instance_variable_set(:@skip_callback, true) + file_backup.save else + file_backup.instance_variable_set(:@skip_callback, true) file_backup.update_attributes(file_backup_data) end file_backup_ids << file_backup.id @@ -230,7 +237,10 @@ namespace :create_site do db_backup = SiteServerDbBackup.where(db_backup_data.except(:disable)).first if db_backup.nil? db_backup = SiteServerDbBackup.create(db_backup_data) + db_backup.instance_variable_set(:@skip_callback, true) + db_backup.save else + db_backup.instance_variable_set(:@skip_callback, true) db_backup.update_attributes(db_backup_data) end db_backup_ids << db_backup.id