注:明日的文章,请先堵为快吧!
gitlab异地脚本备份方案
# 10.129.16.242 10.129.16.243 # ----------+-----------------------------+------- # | | # +-----+-----+ +------+------+ # | A | | B | # +-----------+ +-------------+ # gitlab server backups clinet # # A and B passed ssh Authentication # This shell script will execute on A Server #!/bin/bash [ $(id -u) -ne 0 ] || exit 1 save_days=5 [ $? -eq 1 ] && exit 1 gitlab_internal_backup_directory=/data/var/opt/gitlab/backups # if you have both wan ip and lan ip, you can fill it with all, if you have one ip, you can fill it just with lan ip backup_server_ipaddress_public=xxx.xxx.xxx.xxx backup_server_ipaddress_private=10.129.16.243 # select lan ip first for transmission speed backup_server_hostname=${backup_server_ipaddress_private:-$backup_server_ipaddress_public} backup_server_ssh_username=root #backup_server_ssh_port=$(awk ‘/Port/ {print $2}‘ /etc/ssh/sshd_config) backup_server_ssh_port=$(netstat -anop | awk ‘/sshd/ && /LISTEN/ {print $4}‘ | awk -F ‘:‘ ‘{print $2}‘) backup_server_ssh_hostname=$backup_server_hostname backup_path=/data/gitlab_backup_directory backup_path_time_uniq=$(date -d "yesterday" +"%Y%m%d") [ -d $backup_path/$backup_path_time_uniq ] || mkdir -p $backup_path/$backup_path_time_uniq # sudo -u gitlab_ci -H bundle exec rake backup:create RAILS_ENV=production /data/opt/gitlab/bin/gitlab-rake gitlab:backup:create >$backup_path/backup_path_time_uniq/$(date -d "yesterday" +"%Y%m%d").log 2>&1 [ $? -ne 0 ] && echo "Local backup failed! " && exit 1;echo "Local backup successfully! " backuped_tar_file=`awk ‘/gitlab_backup.tar/ {print $4}‘ $backup_path/backup_path_time_uniq/$(date -d "yesterday" +"%Y%m%d").log` [ -f $gitlab_internal_backup_directory/$backuped_tar_file ] && echo "Find backuped tar file successfully! " ssh [email protected]$backup_server_ssh_hostname [ -d $backup_path/$backup_path_time_uniq ] || mkdir -p $backup_path/$backup_path_time_uniq [ $? -ne 0 ] && echo "Remote backup directory creation failed! " && exit 1;echo "Remote backup directory creation successfully! " scp -P$port $gitlab_internal_backup_directory/$backuped_tar_file [email protected]$backup_server_ssh_hostname:$backup_path/$backup_path_time_uniq [ $? -ne 0 ] && echo "Remote backup transmission failed! " && exit 1;echo "Remote backup transmission successfully! " find $gitlab_internal_backup_directory -mtime +$save_days -exec rm -rf {} \; [ $? -ne 0 ] && echo "Local expired backup remove skipped! ";echo "Local expired backup remove successfully! " find $backup_path -mtime +$save_days -exec rm -rf {} \; [ $? -ne 0 ] && echo "Local expired tempdir remove skipped! ";echo "Local expired tempdir remove successfully! " ssh [email protected]$backup_server_ssh_hostname find $backup_path -mtime +$save_days -exec rm -rf {} \; [ $? -ne 0 ] && echo "Remote expired backup remove skipped! ";echo "Remote expired backup remove successfully! " # References # GitLab.org / GitLab Community Edition / Backup restore https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md # GitLab.org / GitLab CI / Backup restore https://gitlab.com/gitlab-org/gitlab-ci/blob/master/doc/raketasks/backup_restore.md
confluence异地脚本备份方案
#!/bin/bash # 10.129.16.242 10.129.16.243 # ----------+-----------------------------+------- # | | # +-----+-----+ +------+------+ # | A | | B | # +-----------+ +-------------+ # confluence server backups clinet # # This shell script will execute on B Server # A and B passed ssh Authentication # run with root [ $(id -u) -ne 0 ] || exit 1 # save 30 days save_days=10 # which directory to backup to backup_path=/data/confluence_backup_directory # make backups uniqure and backup per day # backup_path_time_uniq=$(date -d "yesterday" +"%Y%m%d%H%M%S") backup_path_time_uniq=$(date -d "yesterday" +"%Y%m%d") confluence_home_directory=/data/var/atlassian/application-data/confluence # if you have both wan ip and lan ip, you can fill it with all, if you have one ip, you can fill it just with lan ip confluence_server_ipaddress_public=xxx.xxx.xxx.xxx confluence_server_ipaddress_private=10.129.16.242 # select lan ip first for transmission speed confluence_server_hostname=${confluence_server_ipaddress_private:-$confluence_server_ipaddress_public} confluence_server_ssh_username=root #confluence_server_ssh_port=$(awk ‘/Port/ {print $2}‘ /etc/ssh/sshd_config) confluence_server_ssh_port=$(netstat -anop | awk ‘/sshd/ && /LISTEN/ {print $4}‘ | awk -F ‘:‘ ‘{print $2}‘) confluence_server_ssh_hostname=$confluence_server_hostname # which files and directory backup #backup_files=(confluence.cfg.xml attachments config index) backup_files=(confluence.cfg.xml attachments index) backup_files_num=${#backup_files[@]} [ -d $backup_path/$backup_path_time_uniq ] || mkdir -p $backup_path/$backup_path_time_uniq # do ssh copy for (( i = 0; i < $backup_files_num; i++ )); do scp -r -P$confluence_server_ssh_port [email protected]$confluence_server_ssh_hostname:$confluence_home_directory/${backup_files[i]} $backup_path/$backup_path_time_uniq [ $? -ne 0 ] && echo "Backup failed! " && exit 1;echo "Backup successfully! " # TODO # find postgresql dump done # delete old backups find $backup_path -mtime +$save_days -exec rm -rf {} \; # References # Production Backup Strategy https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy # Configuring Backups https://confluence.atlassian.com/display/DOC/Configuring+Backups#ConfiguringBackups-EnablingBackupPathConfiguration # Valid Backup File Date Patterns are based on the Java SimpleDateFormat class http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html # # Perform_backups Enable # BackupFilename(Sample) backup-2015_08_17 # Backup File Prefix backup- # Backup File Date Pattern yyyy_MM_dd # Backup Path /data/var/atlassian/application-data/confluence/backups # Confluence Home directory /data/var/atlassian/application-data/confluence/
--end--
时间: 2024-08-04 22:22:44