yew6n-aaaaa-aaaad-qaqrq-cai.icp0.io Open in urlscan Pro
2a0b:21c0:b002:2:5000:53ff:feb3:7feb  Public Scan

URL: https://yew6n-aaaaa-aaaad-qaqrq-cai.icp0.io/Linux-backup/index.html
Submission: On December 18 via api from US — Scanned from CH

Form analysis 1 forms found in the DOM

Name: search

<form class="md-search__form" name="search">
  <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required="">
  <label class="md-search__icon md-icon" for="__search">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
      <path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path>
    </svg>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
      <path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path>
    </svg>
  </label>
  <nav class="md-search__options" aria-label="Search">
    <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
        <path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path>
      </svg>
    </button>
  </nav>
</form>

Text Content

Skip to content

notebook
Linux-backup
Type to start searching
GitHub
 * 186
 * 27

notebook
GitHub
 * 186
 * 27

 * Home
 * Python
   Python
    * Python
    * Gist Python一些常用代码片段
    * Course Python程序设计

 * Programming Languages
   Programming Languages
    * BASH
    * BAT批处理
    * C语言
    * Java
      Java
       * Java
       * S2-045
   
    * JavaScript
    * PHP

 * Web
   Web
    * CDN
    * cURL
    * Favorites
      Favorites
       * Favorites
       * Github Project Recommendation
       * 更多链接
   
    * Flask
    * MySQL
    * Nginx
    * RabbitMQ

 * Development
   Development
    * Developer
    * Docker
    * ETH
    * Git
    * Jekyll
    * Paper Reading
    * WindowsSoftware

 * Fuzzing
   Fuzzing
    * DFSan

 * Fun
   Fun
    * Bitcoin

 * Linux
   Linux
    * Linux-backup Linux-backup
      Table of contents
       * Demo
       * 用rsync代替scp
       * tar备份整个系统
       * 使用rsync像time machine一样全盘备份
          * rsync备份到非root用户的目标机器上
      
       * rsync备份安卓手机
   
    * Linux-setup
    * Linux-SSH
    * Linux-cli
    * Linux-VirtualBox
    * Ubuntu

 * My Projects
   My Projects
    * ZJU grs helper
    * CCF Badge

Table of contents
 * Demo
 * 用rsync代替scp
 * tar备份整个系统
 * 使用rsync像time machine一样全盘备份
    * rsync备份到非root用户的目标机器上

 * rsync备份安卓手机


备份 备份 备份!¶

一个良好安全的备份计划至关重要,备份脚本应该导出数据库、压缩日志和动态产生的数据文件,加密后上传至其他服务器或CDN

--------------------------------------------------------------------------------


DEMO¶

下面的例子涉及到date、docker、tar、zip、七牛qshell命令的使用

# !/bin/bash
pushd 工作目录
d=`date +%Y%m%d`
mkdir bakup$d
cd bakup$d
(docker exec 容器名称 mysqldump -p密码 数据库名称) >database.sql
tar cvzf log.tar.gz ../log # 压缩log目录
cd ../
# 使用zip加密压缩,压缩后删除原文件
zip -r -P 压缩密码 -m bakup$d.zip bakup$d/
# 使用七牛的qshell上传备份文件,运行前需要配置账号qshell account 你的AK 你的SK
# 下面这条命令表示将bakup$d.zip上传,CDN上存储的文件名为$d.zip
./qshell fput 你的bucket的名称 $d.zip bakup$d.zip
# 如果你放心可以本地彻底删掉备份文件:
# rm -r bakup$d.zip


--------------------------------------------------------------------------------


用RSYNC代替SCP¶

rsync可以断点续传,不如就用rsync代替scp

参考:https://www.digitalocean.com/community/tutorials/how-to-copy-files-with-rsync-over-ssh

首先需要ssh-keygen生成id_rsa,把id_rsa.pub的内容复制到目标机器的~/.ssh/authorized_keys

在需要使用scp -r的地方改为rsync -avz -e “ssh -o StrictHostKeyChecking=no -o
UserKnownHostsFile=/dev/null” –progress

--------------------------------------------------------------------------------


TAR备份整个系统¶

比如通过远程ssh的方式下载到服务器的整个根目录打包:

ssh server tar -cvpz --one-file-system / > server_backup.tar.gz


其中:

 * c 创建
 * v 压缩时显示详情 当前处理的文件
 * p preserve-permissions保留权限信息
 * z 使用gzip压缩


使用RSYNC像TIME MACHINE一样全盘备份¶

https://github.com/laurent22/rsync-time-backup

例如将Linux服务器多个硬盘所有文件备份到/nas/hostname下面

先从github下载这个rsync_tmbackup.sh文件,删掉其中的--one-file-system,放入/nas目录

将需要忽略的目录写成/nas/rsync_ignore.txt,例如:(注意忽略了/mnt)

- /boot
- /dev
- /lost+found
- /media
- /mnt
- /nas
- /nfs
- /proc
- /snap
- /sys
- /tmp


然后就执行呗:

mkdir -p /nas/hostname
touch /nas/hostname/backup.marker
/nas/rsync_tmbackup.sh / /nas/hostname/ /nas/rsync_ignore.txt


好处是不用自己构造rsync各种复杂的参数,备份的效果是每次备份都会产生一个文件夹,但上次备份时已经存在的文件只会做硬链接


RSYNC备份到非ROOT用户的目标机器上¶

参考:
https://serverfault.com/questions/755753/preserve-ownership-with-rsync-without-root

全盘备份希望能保留文件的属性,如果目标位置没有root用户则不能直接保留,rsync提供了--fake-super这个选项

这个--fake-super选项启用后,rsync会把属性以特殊拓展属性的方式存储,恢复的时候rsync会利用这个属性进行恢复


RSYNC备份安卓手机¶

参考: http://ptspts.blogspot.com/2015/03/how-to-use-rsync-over-adb-on-android.html

首先保证手机的usb调试开启了,adb shell能进入手机,在Linux主机上执行:

# 将rsync二进制发给手机
wget -O rsync.bin http://github.com/pts/rsyncbin/raw/master/rsync.rsync4android
adb push rsync.bin /data/local/tmp/rsync
adb shell chmod 755 /data/local/tmp/rsync
adb shell /data/local/tmp/rsync --version

# 在安卓上启动rsync server 监听在1873端口,转发到Linux的6010端口
adb shell 'exec >/sdcard/rsyncd.conf && echo address = 127.0.0.1 && echo port = 1873 && echo "[root]" && echo path = / && echo use chroot = false && echo read only = false'
adb shell /data/local/tmp/rsync --daemon --no-detach --config=/sdcard/rsyncd.conf --log-file=/proc/self/fd/2
# 再启动一个终端继续
adb forward tcp:6010 tcp:1873

# 复制整个/sdcard目录
rsync -avzP --stats rsync://localhost:6010/root/sdcard/ .


浙ICP备15043819号-2  浙公网安备 33010602007826号



Made with Material for MkDocs