门户网站建设费用科目谷歌seo服务公司

当前位置: 首页 > news >正文

门户网站建设费用科目,谷歌seo服务公司,网站建设长期待摊费用,个人接网站开发的平台title: 020《树莓派4B家庭服务器搭建指南》第二十期#xff1a;在树莓派运行rsnapshot, 实现对服务器数据低成本增量本地备份 我的天翼云服务器有/opt 和 /usr/share/nginx两个目录, 用来存储网站的内容, 数据无价, 为了避免珍贵的数据丢失#xff0c;我决定使用树莓派运行 … title: 020《树莓派4B家庭服务器搭建指南》第二十期在树莓派运行rsnapshot, 实现对服务器数据低成本增量本地备份 我的天翼云服务器有/opt 和 /usr/share/nginx两个目录, 用来存储网站的内容, 数据无价, 为了避免珍贵的数据丢失我决定使用树莓派运行 rsnapshot, 为网站内容做定期备份。 为什么选择rsnapshot
rsnapshot是基于rsync的开源软件, 原理简单无后门, 无需强制加密, 备份后的数据所见即所得rsnapshot通过硬链接管理文件, 处于不同文件夹的同一个文件, 只占用一份存储空间, 节省磁盘rsnapshot默认进行增量备份, 节省带宽。rsnapshot长期维护(从2015年开始维护), 功能稳定在Github的开源仓库https://github.com/rsnapshot/rsnapshot 有2.9k Star广受好评 安装rsnapshot sudo apt install rsnapshot配置树莓派免密登录云服务器 cd ~/.ssh ssh-keygen# 设置密钥权限

公钥644

sudo chmod 644 ~/.ssh/fangyuanxiaozhan.com.pub

私钥600

sudo chmod 600 ~/.ssh/fangyuanxiaozhan.com将公钥发送的远程主机 ssh-copy-id -i ~/.ssh/fangyuanxiaozhan.com.pub 远程主机用户名远程主机ip或域名在树莓派创建 ~/.ssh/config 并给与权限600

如果已经存在~/.ssh/config 则无需创建

touch ~/.ssh/config chmod 600 /.ssh/config在/.ssh/config 中填入以下内容 Host 主机ip或域名 HostName 主机ip或域名 User root IdentityFile ~/.ssh/fangyuanxiaozhan.comssh可以免密登录基于rsync的rsnapshot也可以免密从服务器传输文件了。 按需求修改配置文件 在树莓派创建rsnapshot备份文件夹

创建rsnapshot存储数据的根目录

mkdir /opt/rsnapshot

创建存储我天翼云服务器数据的目录

mkdir /opt/rsnapshot/CTYun设置根目录 修改rsnapshot配置文件/etc/rsnapshot.conf, 将snapshot_root 对应的字段修改为在树莓派创建的根目录 snapshot_root /opt/rsnapshot/配置文件配置行之间使用Tab填充空格会报错比如snapshot_root(这里用Tab填充)/opt/rsnapshot/ 屏蔽本机备份配置 查看/etc/rsnapshot.conf 的底部我们可以看到很多backup开头的配置行其中默认的几行是对树莓派本机的几个目录备份可以前面添加#屏蔽掉 移除对ssh绝对路径的注释 由于rsnapshot从服务器备份数据依赖了rsync而rsync又依赖了ssh所以我们需要将ssh的绝对路径告诉rsnapshot, 也就是将cmd_ssh 所在行开头的#去掉 cmd_ssh /usr/bin/ssh改变锁文件的位置 lockfile的作用是防止同时运行两个rsnapshot实例相当于一把锁这把锁的位置可以由我们自己定义lockfile的默认位置为/var/run/rsnapshot.pid 我想以用户名ubuntu的身份运行rsnapshot实例就要把锁文件位置配置到 ubuntu用户有权限修改的位置我的处理方式是新建 /home/ubuntu/.rsnapshot 文件夹 mkdir /home/ubuntu/.rsnapshot然后将lockfile改为 lockfile /home/ubuntu/.rsnapshot/rsnapshot.pid备份文件夹的配置 在配置文件尾部追加

CTYun

backup rootfangyuanxiaozhan.com:/etc/nginx ./ backup rootfangyuanxiaozhan.com:/opt ./ exclude/opt/before,exclude/opt/EasyTypora/node_modules backup rootfangyuanxiaozhan.com:/usr/share/nginx/fangyuanxiaozhan.com ./测试配置文件格式是否正确 rsnapshot configtest我最终的配置文件供参考 #################################################

rsnapshot.conf - rsnapshot configuration file

#################################################

PLEASE BE AWARE OF THE FOLLOWING RULE:

This file requires tabs between elements

########################################################################

CONFIG FILE VERSION

#######################config_version 1.2###########################

SNAPSHOT ROOT DIRECTORY

############################ All snapshots will be stored under this root directory. # snapshot_root /opt/rsnapshot/CTYun/# If no_create_root is enabled, rsnapshot will not automatically create the

snapshot_root directory. This is particularly useful if you are backing

up to removable media, such as a FireWire or USB drive.

# #no_create_root 1#################################

EXTERNAL PROGRAM DEPENDENCIES

################################## LINUX USERS: Be sure to uncomment cmd_cp. This gives you extra features.

EVERYONE ELSE: Leave cmd_cp commented out for compatibility.

#

See the README file or the man page for more details.

# cmd_cp /bin/cp# uncomment this to use the rm program instead of the built-in perl routine. # cmd_rm /bin/rm# rsync must be enabled for anything to work. This is the only command that

must be enabled.

# cmd_rsync /usr/bin/rsync# Uncomment this to enable remote ssh backups over rsync. # cmd_ssh /usr/bin/ssh# Comment this out to disable syslog support. # cmd_logger /usr/bin/logger# Uncomment this to specify the path to du for disk usage checks.

If you have an older version of du, you may also want to check the

du_args parameter below.

# #cmd_du /usr/bin/du# Uncomment this to specify the path to rsnapshot-diff. # #cmd_rsnapshot_diff /usr/bin/rsnapshot-diff# Specify the path to a script (and any optional arguments) to run right

before rsnapshot syncs files

# #cmd_preexec /path/to/preexec/script# Specify the path to a script (and any optional arguments) to run right

after rsnapshot syncs files

# #cmd_postexec /path/to/postexec/script# Paths to lvcreate, lvremove, mount and umount commands, for use with

Linux LVMs.

# #linux_lvm_cmd_lvcreate /sbin/lvcreate #linux_lvm_cmd_lvremove /sbin/lvremove #linux_lvm_cmd_mount /bin/mount #linux_lvm_cmd_umount /bin/umount#########################################

BACKUP LEVELS / INTERVALS

Must be unique and in ascending order

e.g. alpha, beta, gamma, etc.

#########################################retain alpha 6 retain beta 7 retain gamma 4 #retain delta 3############################################

GLOBAL OPTIONS

All are optional, with sensible defaults

############################################# Verbose level, 1 through 5.

1 Quiet Print fatal errors only

2 Default Print errors and warnings only

3 Verbose Show equivalent shell commands being executed

4 Extra Verbose Show extra verbose information

5 Debug mode Everything

# verbose 2# Same as verbose above, but controls the amount of data sent to the

logfile, if one is being used. The default is 3.

If you want the rsync output, you have to set it to 4

# loglevel 3# If you enable this, data will be written to the file you specify. The

amount of data written is controlled by the loglevel parameter.

# #logfile /var/log/rsnapshot.log# If enabled, rsnapshot will write a lockfile to prevent two instances

from running simultaneously (and messing up the snapshot_root).

If you enable this, make sure the lockfile directory is not world

writable. Otherwise anyone can prevent the program from running.

# lockfile /home/ubuntu/.rsnapshot/rsnapshot.pid# By default, rsnapshot check lockfile, check if PID is running

and if not, consider lockfile as stale, then start

Enabling this stop rsnapshot if PID in lockfile is not running

# #stop_on_stale_lockfile 0# Default rsync args. All rsync commands have at least these options set. # #rsync_short_args -a #rsync_long_args –delete –numeric-ids –relative –delete-excluded# ssh has no args passed by default, but you can specify some here. # #ssh_args -p 22# Default arguments for the du program (for disk space reporting).

The GNU version of du is preferred. See the man page for more details.

If your version of du doesnt support the -h flag, try -k flag instead.

# #du_args -csh# If this is enabled, rsync wont span filesystem partitions within a

backup point. This essentially passes the -x option to rsync.

The default is 0 (off).

# #one_fs 0# The include and exclude parameters, if enabled, simply get passed directly

to rsync. If you have multiple include/exclude patterns, put each one on a

separate line. Please look up the –include and –exclude options in the

rsync man page for more details on how to specify file name patterns.

# #include ??? #include ??? #exclude ??? #exclude ???# The include_file and exclude_file parameters, if enabled, simply get

passed directly to rsync. Please look up the –include-from and

–exclude-from options in the rsync man page for more details.

# #include_file /path/to/include/file #exclude_file /path/to/exclude/file# If your version of rsync supports –link-dest, consider enabling this.

This is the best way to support special files (FIFOs, etc) cross-platform.

The default is 0 (off).

# #link_dest 0# When sync_first is enabled, it changes the default behaviour of rsnapshot.

Normally, when rsnapshot is called with its lowest interval

(i.e.: rsnapshot alpha), it will sync files AND rotate the lowest

intervals. With sync_first enabled, rsnapshot sync handles the file sync,

and all interval calls simply rotate files. See the man page for more

details. The default is 0 (off).

# #sync_first 0# If enabled, rsnapshot will move the oldest directory for each interval

to [interval_name].delete, then it will remove the lockfile and delete

that directory just before it exits. The default is 0 (off).

# #use_lazy_deletes 0# Number of rsync re-tries. If you experience any network problems or

network card issues that tend to cause ssh to fail with errors like

Corrupted MAC on input, for example, set this to a non-zero value

to have the rsync operation re-tried.

# #rsync_numtries 0# LVM parameters. Used to backup with creating lvm snapshot before backup

and removing it after. This should ensure consistency of data in some special

cases

#

LVM snapshot(s) size (lvcreate –size option).

# #linux_lvm_snapshotsize 100M# Name to be used when creating the LVM logical volume snapshot(s). # #linux_lvm_snapshotname rsnapshot# Path to the LVM Volume Groups. # #linux_lvm_vgpath /dev# Mount point to use to temporarily mount the snapshot(s). # #linux_lvm_mountpath /path/to/mount/lvm/snapshot/during/backup###############################

BACKUP POINTS / SCRIPTS

################################ LOCALHOST #backup /home/ localhost/ #backup /etc/ localhost/ #backup /usr/local/ localhost/ #backup /var/log/rsnapshot localhost/ #backup /etc/passwd localhost/ #backup /home/foo/My Documents/ localhost/ #backup /foo/bar/ localhost/ one_fs1,rsync_short_args-urltvpog #backup_script /usr/local/bin/backup_pgsql.sh localhost/postgres/

You must set linuxlvm* parameters below before using lvm snapshots

#backup lvm://vg0/xen-home/ lvm-vg0/xen-home/# EXAMPLE.COM #backup_exec /bin/date backup of example.com started at %c #backup rootexample.com:/home/ example.com/ rsync_long_args–bwlimit16,excludecore #backup rootexample.com:/etc/ example.com/ excludemtab,excludecore #backup_exec ssh rootexample.com mysqldump -A /var/db/dump/mysql.sql #backup rootexample.com:/var/db/dump/ example.com/ #backup_exec /bin/date backup of example.com ended at %c# CVS.SOURCEFORGE.NET #backup_script /usr/local/bin/backup_rsnapshot_cvsroot.sh rsnapshot.cvs.sourceforge.net/# RSYNC.SAMBA.ORG #backup rsync://rsync.samba.org/rsyncftp/ rsync.samba.org/rsyncftp/

CTYun

backup rootfangyuanxiaozhan.com:/etc/nginx ./ backup rootfangyuanxiaozhan.com:/opt ./ exclude/opt/before,exclude/opt/EasyTypora/node_modules backup rootfangyuanxiaozhan.com:/usr/share/nginx/fangyuanxiaozhan.com ./配置行内的空余部分不要用空格一定要用Tab填充 关于备份数量上限的解释 在以上配置文件中有以下几行 retain alpha 6 retain beta 7 retain gamma 4以alpah为例 retain alpha 6代表最多进行六个备份比如alpha.0 alpha.1 alpha.2 alpha.3 alpha.4 alpha.5 其中alpha.0为最新的备份alpha.5为最老的备份超过了6次备份最早的一份将会从磁盘清除首次运行备份指令后alpha.0 文件夹会生成在根目录下面也就是/opt/rsnapshot/CTYun/alpha.0, /opt/rsnapshot/CTYun/alpha.0文件夹里存放着备份好的文件目录。 手动进行备份 rsnapshot -c /etc/rsnapshot.conf alpha上面命令汇总我们使用alpha策略进行备份并指定了配置文件的位置。 执行完成后查看目录结构 可以看到alpha.0成了真的的根目录。 我们多运行几次rsnapshot -c /etc/rsnapshot.conf alpha 可以看到在/opt/rsnapshot/CTYun 文件夹下有几个并列的alpha.* 文件夹 由于配置了retain alpha 6,无论我们运行多少次alpha.*都不会超过六个 自动化备份 crontab是一款可以创建定时任务的工具我们可以在crontab中添加每四小时运行rsnapshot -c /etc/rsnapshot.conf alpha 的任务这样就相当于每天执行了6次备份。 在ubuntu中crontab默认对所有用户进行了安装所以我们无需sudo权限就能创建任务操作方法如下 打开cron表 crontab -e首次打开可以选择编辑器我选择了vim 打开添加每四小时运行一次命令的配置 0 */4 * * * rsnapshot -c /etc/rsnapshot.conf alpha写入配置后退出编辑器即可 优化: 创建每日执行保留31天的备份任务 我希望每天凌晨4点能生成新备份保留31天但又不希望和每隔4小时的的备份有冲突(两个任务共用logfile会相互影响)。 于是我新开一个配置文件/home/ubuntu/.rsnapshot/mouthly.conf, 添加retain monthly 31, 修改filelock 为lockfile /home/ubuntu/.rsnapshot/monthly.pid 这里的monthly 完全可以自定义并没有特殊性可以是monthly001 或 monthly002, 只要运行命令时对应即可。 内容为 #################################################

rsnapshot.conf - rsnapshot configuration file

#################################################

PLEASE BE AWARE OF THE FOLLOWING RULE:

This file requires tabs between elements

########################################################################

CONFIG FILE VERSION

#######################config_version 1.2###########################

SNAPSHOT ROOT DIRECTORY

############################ All snapshots will be stored under this root directory. # snapshot_root /opt/rsnapshot/CTYun/# If no_create_root is enabled, rsnapshot will not automatically create the

snapshot_root directory. This is particularly useful if you are backing

up to removable media, such as a FireWire or USB drive.

# #no_create_root 1#################################

EXTERNAL PROGRAM DEPENDENCIES

################################## LINUX USERS: Be sure to uncomment cmd_cp. This gives you extra features.

EVERYONE ELSE: Leave cmd_cp commented out for compatibility.

#

See the README file or the man page for more details.

# cmd_cp /bin/cp# uncomment this to use the rm program instead of the built-in perl routine. # cmd_rm /bin/rm# rsync must be enabled for anything to work. This is the only command that

must be enabled.

# cmd_rsync /usr/bin/rsync# Uncomment this to enable remote ssh backups over rsync. # cmd_ssh /usr/bin/ssh# Comment this out to disable syslog support. # cmd_logger /usr/bin/logger# Uncomment this to specify the path to du for disk usage checks.

If you have an older version of du, you may also want to check the

du_args parameter below.

# #cmd_du /usr/bin/du# Uncomment this to specify the path to rsnapshot-diff. # #cmd_rsnapshot_diff /usr/bin/rsnapshot-diff# Specify the path to a script (and any optional arguments) to run right

before rsnapshot syncs files

# #cmd_preexec /path/to/preexec/script# Specify the path to a script (and any optional arguments) to run right

after rsnapshot syncs files

# #cmd_postexec /path/to/postexec/script# Paths to lvcreate, lvremove, mount and umount commands, for use with

Linux LVMs.

# #linux_lvm_cmd_lvcreate /sbin/lvcreate #linux_lvm_cmd_lvremove /sbin/lvremove #linux_lvm_cmd_mount /bin/mount #linux_lvm_cmd_umount /bin/umount#########################################

BACKUP LEVELS / INTERVALS

Must be unique and in ascending order

e.g. alpha, beta, gamma, etc.

#########################################retain monthly 31 retain alpha 6 retain beta 7 retain gamma 4 #retain delta 3############################################

GLOBAL OPTIONS

All are optional, with sensible defaults

############################################# Verbose level, 1 through 5.

1 Quiet Print fatal errors only

2 Default Print errors and warnings only

3 Verbose Show equivalent shell commands being executed

4 Extra Verbose Show extra verbose information

5 Debug mode Everything

# verbose 2# Same as verbose above, but controls the amount of data sent to the

logfile, if one is being used. The default is 3.

If you want the rsync output, you have to set it to 4

# loglevel 3# If you enable this, data will be written to the file you specify. The

amount of data written is controlled by the loglevel parameter.

# #logfile /var/log/rsnapshot.log# If enabled, rsnapshot will write a lockfile to prevent two instances

from running simultaneously (and messing up the snapshot_root).

If you enable this, make sure the lockfile directory is not world

writable. Otherwise anyone can prevent the program from running.

# lockfile /home/ubuntu/.rsnapshot/monthly.pid# By default, rsnapshot check lockfile, check if PID is running

and if not, consider lockfile as stale, then start

Enabling this stop rsnapshot if PID in lockfile is not running

# #stop_on_stale_lockfile 0# Default rsync args. All rsync commands have at least these options set. # #rsync_short_args -a #rsync_long_args –delete –numeric-ids –relative –delete-excluded# ssh has no args passed by default, but you can specify some here. # #ssh_args -p 22# Default arguments for the du program (for disk space reporting).

The GNU version of du is preferred. See the man page for more details.

If your version of du doesnt support the -h flag, try -k flag instead.

# #du_args -csh# If this is enabled, rsync wont span filesystem partitions within a

backup point. This essentially passes the -x option to rsync.

The default is 0 (off).

# #one_fs 0# The include and exclude parameters, if enabled, simply get passed directly

to rsync. If you have multiple include/exclude patterns, put each one on a

separate line. Please look up the –include and –exclude options in the

rsync man page for more details on how to specify file name patterns.

# #include ??? #include ??? #exclude ??? #exclude ???# The include_file and exclude_file parameters, if enabled, simply get

passed directly to rsync. Please look up the –include-from and

–exclude-from options in the rsync man page for more details.

# #include_file /path/to/include/file #exclude_file /path/to/exclude/file# If your version of rsync supports –link-dest, consider enabling this.

This is the best way to support special files (FIFOs, etc) cross-platform.

The default is 0 (off).

# #link_dest 0# When sync_first is enabled, it changes the default behaviour of rsnapshot.

Normally, when rsnapshot is called with its lowest interval

(i.e.: rsnapshot alpha), it will sync files AND rotate the lowest

intervals. With sync_first enabled, rsnapshot sync handles the file sync,

and all interval calls simply rotate files. See the man page for more

details. The default is 0 (off).

# #sync_first 0# If enabled, rsnapshot will move the oldest directory for each interval

to [interval_name].delete, then it will remove the lockfile and delete

that directory just before it exits. The default is 0 (off).

# #use_lazy_deletes 0# Number of rsync re-tries. If you experience any network problems or

network card issues that tend to cause ssh to fail with errors like

Corrupted MAC on input, for example, set this to a non-zero value

to have the rsync operation re-tried.

# #rsync_numtries 0# LVM parameters. Used to backup with creating lvm snapshot before backup

and removing it after. This should ensure consistency of data in some special

cases

#

LVM snapshot(s) size (lvcreate –size option).

# #linux_lvm_snapshotsize 100M# Name to be used when creating the LVM logical volume snapshot(s). # #linux_lvm_snapshotname rsnapshot# Path to the LVM Volume Groups. # #linux_lvm_vgpath /dev# Mount point to use to temporarily mount the snapshot(s). # #linux_lvm_mountpath /path/to/mount/lvm/snapshot/during/backup###############################

BACKUP POINTS / SCRIPTS

################################ LOCALHOST #backup /home/ localhost/ #backup /etc/ localhost/ #backup /usr/local/ localhost/ #backup /var/log/rsnapshot localhost/ #backup /etc/passwd localhost/ #backup /home/foo/My Documents/ localhost/ #backup /foo/bar/ localhost/ one_fs1,rsync_short_args-urltvpog #backup_script /usr/local/bin/backup_pgsql.sh localhost/postgres/

You must set linuxlvm* parameters below before using lvm snapshots

#backup lvm://vg0/xen-home/ lvm-vg0/xen-home/# EXAMPLE.COM #backup_exec /bin/date backup of example.com started at %c #backup rootexample.com:/home/ example.com/ rsync_long_args–bwlimit16,excludecore #backup rootexample.com:/etc/ example.com/ excludemtab,excludecore #backup_exec ssh rootexample.com mysqldump -A /var/db/dump/mysql.sql #backup rootexample.com:/var/db/dump/ example.com/ #backup_exec /bin/date backup of example.com ended at %c# CVS.SOURCEFORGE.NET #backup_script /usr/local/bin/backup_rsnapshot_cvsroot.sh rsnapshot.cvs.sourceforge.net/# RSYNC.SAMBA.ORG #backup rsync://rsync.samba.org/rsyncftp/ rsync.samba.org/rsyncftp/

CTYun

backup rootfangyuanxiaozhan.com:/etc/nginx ./ backup rootfangyuanxiaozhan.com:/opt ./ exclude/opt/before,exclude/opt/EasyTypora/node_modules backup rootfangyuanxiaozhan.com:/usr/share/nginx/fangyuanxiaozhan.com ./测试月度备份配置文件 rsnapshot -c /home/ubuntu/.rsnapshot/monthly.conf configtest运行crontab -e 将以下配置添加为每日凌晨四点运行的定时任务 0 4 * * * rsnapshot -c /home/ubuntu/.rsnapshot/monthly.conf monthlymonthly任务备份后会产生以monthly开头的文件夹 rsnapshot -c /home/ubuntu/.rsnapshot/monthly.conf monthly小结 云服务商的硬盘还是蛮贵的对于个人开发者而言同时能省一些钱总是好的。 2023年的机械硬盘算是很便宜了1千块能买16TB的全新盘搞一块插到树莓派定期对服务器数据做增量备份成本比云服务商的低很多。 如果你是一个上班族办公室和家里各部署一套rsnapshot备份也算是支持数据分布式异地容灾了。 为什么要把服务器数据备份到本地目前的ICP备案搞的风风火火买了服务器由于备案的限制也不能马上使用80443等端口即使服务器备了案解析的域名也会受到限制如果有一天由于某种不可抗力把个人备案关联的服务器的数据全部封存也不是不可能所以做好本地数据备份总是没错的反正成本也不高。 本文属于《树莓派不吃灰》系列的第二十期《树莓派不吃灰》系列教程开源地址 github.com/zhaoolee/pi 本文永久更新地址(欢迎来读留言,写评论): https://www.v2fy.com/p/2023-08-17-rsnapshot-1692258217000