WordPress网站每天定时备份到百度网盘

我之前写过一个备份到百度网盘的办法,适用于Windows,是使用filegee这个软件加Windows自己的定时任务。现在我服务器切换到Linux来了,所以就找了个能在linux下运行的工具。就是它——houtianze/bypy: Python client for Baidu Yun (Personal Cloud Storage) 百度云/百度网盘Python客户端

这个工具用起来更加简单,且在任意平台都能使用,只要安装Python即可

怎么安装Python和pip就不解释了,然后直接用pip安装bypy

pip install bypy

安装好后,执行任意命令,验证账号,比如执行 bypy list ,然后打开生成的验证链接,看到验证码后复制到终端里即可

之后就可以执行上传等命令了

bypy upload 是上传

bypy mkdir 是创建目录

然后编写一个脚本,定时执行就行了

对了,在服务器内上传到百度盘的速度取决于你的服务器带宽,5MB的带宽每秒上传800kb左右,如果你是1、2MB的带宽并且网站很大的话,上传要很长时间的

#!/bin/bash

rm -rf /root/backuptemp

mkdir /root/backuptemp ## 创建临时目录
## tar打包网站根目录,并且分卷压缩
tar --warning=no-file-changed -zcf - /www/wwwroot/zuoridangnian.com |split -d -b 100m - /root/backuptemp/$(date +%Y-%m-%d).tar.gz. 
## 导出数据库
mysqldump -uroot -p123456 zrdn > /root/backuptemp/zrdn.sql
## 用当前日期创建一个目录
bypy mkdir $(date +%Y-%m-%d)
## 上传网站内容和数据库到这个目录
bypy upload /root/backuptemp $(date +%Y-%m-%d)
## 删除临时文件夹
rm -rf /root/backuptemp

然后在crontab中创建好定时任务,怎么使用crontab自行谷歌,或者像我一样图方便,直接在宝塔后台创建一个定时任务,然后将脚本复制进去就好了!非常方便

每日凌晨两点准时备份,免费享受百度网盘2TB容量,岂不美哉!

至于百度盘的下载速度,在客户端设置里打开下载提速,速度也不慢呀

不少人老吐槽百度、腾讯,依我看,它们也都是有一些不错的服务的,像百度网盘,全世界还找有第二个免费容量到2TB的网盘吗?没有了吧,国外dropbox、谷歌盘虽然快,但是容量却只有区区2GB、15GB。至于腾讯,腾讯云也算是国内最实惠的云服务商了吧,价格亲民,我能在国内用到5MB带宽的服务器也得感谢腾讯云了(* ̄︶ ̄)

ssh>could not load host key

ssh无法连接服务器,提示connection closed by ip port 22

在服务器中查看sshd的服务状态出现could not load host key这样的报错

之前没碰到过这样的问题,自己搞了很久知道是可能是这些key文件的问题,但是不知道怎么解决,干脆发了工单,于是过了两个小时售后工程师帮我弄好了,并且指出是这里的错误

这里不得不说阿里云的售后还是不错的,至少这个问题人家帮我解决了,这也是购买国内服务器的一个好处吧——沟通起来不麻烦,之前在国外vps商发过几个工单,但感觉永远是在两个频道

解决办法: https://help.aliyun.com/knowledge_detail/110229.html

总结:

文件权限应为640

输出文件,如果乱码则说明存在问题

cat /etc/ssh_host_rsa_key

执行如下命令,重新生成ssh_host_rsa_key文件。

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

Linux chattr和lsattr命令

chattr 是一个修改Linux上文件的属性的命令,lsattr 则是查看文件属性的命令。
chattr 命令用的最多的一个用处便是可以让一个文件变得不可修改。
chattr 命令的语法为:

chattr [-RVf] [-+=AacDdijsTtSu] [-v version] files...

参数说明:

  • -R:递归的进行修改
  • -V:输出详细信息
  • -f:强制执行

[-+=AacDdijsTtSu]:

  • -:在原有参数设定基础上,移除参数。
  • +:在原有参数设定基础上,追加参数。
  • =:更新为指定参数设定。
  • A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
  • S:硬盘I/O同步选项,功能类似sync。
  • a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
  • c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
  • d:即no dump,设定文件不能成为dump程序的备份目标。
  • i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
  • j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
  • s:保密性地删除文件或目录,即硬盘空间被全部收回。
  • u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。

例如,使用下面命令可以让一个文件变得不可修改:

# chattr +i /etc/resolv.conf

接着,当你对该文件执行 mv 、rm都会得到 Operation not permitted 的结果,vim 编辑该文件时会提示W10: Warning: Changing a readonly file错误。
你可以使用 lsattr 查看该文件属性:

# lsattr /etc/resolv.conf
----i-------- /etc/resolv.conf

要想修改此文件就要把i属性去掉:

# chattr -i /etc/resolv.conf

又或者,你只想让该文件不可删除,但是可以修改

# chattr +a /var/log/messages

参考

Linux htop教程

htop是top的增强版,能以颜色显示不同参数,且支持鼠标操作。这篇文章做一个简单的介绍。

安装

htop需要自己安装
Debian、Ubuntu:

sudo apt-get install htop

Centos、Fedora:

sudo yum install htop
sudo dnf install htop

Arch Linux:

sudo pacman -S htop

运行效果:

使用

进程信息

PID:进程标志号,是非零正整数
USER:进程所有者的用户名
PR:进程的优先级别
NI:进程的优先级别数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程使用的共享内存值
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称

基本操作

F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop
/ : 搜索字符
h : 显示帮助
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构
H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程
M :按内存占用排序
P :按CPU排序
T :按运行时间排序
上下键或PgUP, PgDn : 移动选中进程
左右键或Home, End : 移动列表
Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

参数说明

htop –d 数据刷新时间
htop –u aurain 显示用户aurain的所属进程
M 按Memory 使用排序
P 按CPU 使用排序
T 按Time+ 使用排序
F3 按进程名搜索
直接输入数字 光标将定位于该PID的进程
q 退出

GRUB简单入门教程

GRUB2

GRUB全称GRand Unified Bootloader,是GNU项目中一个支持多系统启动的系统引导程序。GRUB目前分为两个版本,0.9版本以前称为GRUB legacy,1.x以后的版本称为GRUB2,本文描述的是GRUB2。

区别

GRUB2较于GRUB的一些变化:

  • grub2的配置文件是命令生成的

  • 增加了rescue模式,可用来修复引导

  • 支持多种文件系统

  • 添加模块机制,可动态加载模块

  • 分区编号使用1开头

设备命名方式

GRUB2的设备命令方式:

我们知道,在linux系统中,IDE硬盘使用hd开头,SATA硬盘使用sd开头,例如/dev/sda1表示第一块硬盘的第一个分区、/dev/sdb3表示第二块硬盘的第三个分区。

但是在GRUB中不同,硬盘都使用hd(Hard disk)表示,设备从0开始标号,分区从1开始标号。例如(hd0,1)表示第一块硬盘的第一个分区,在Windows中可以理解为C盘。

安装方法

通常情况下,大部分的Linux版本都不需要我们手动安装。

你也可以克隆源代码编译安装

# git clone git://git.savannah.gnu.org/grub.git
# ./configure
# make
# sudo make install

配置文件

GRUB的主要配置文件是/boot/grub/grub.cfg,该配置文件根据/etc/default/grub和/etc/grub.d/目录下的文件生成,所以不可以直接编辑,如果想修改启动项或者添加自定义启动项应该编辑/etc/grub.d/下的脚本。

下面是已经生成的双系统电脑中的grub.cfg文件中两个系统的引导信息:

Ubuntu 16.04

menuentry 'Ubuntu, with Linux 4.13.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.13.0-26-generic-advanced-3c909df0-784e-4b1c-890b-b1e971c84d47' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    set root='hd1,gpt5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt5 --hint-efi=hd1,gpt5 --hint-baremetal=ahci1,gpt5  3c909df0-784e-4b1c-890b-b1e971c84d47
    else
      search --no-floppy --fs-uuid --set=root 3c909df0-784e-4b1c-890b-b1e971c84d47
    fi
    echo  'Loading Linux 4.13.0-26-generic ...'
    linux  /boot/vmlinuz-4.13.0-26-generic.efi.signed root=UUID=3c909df0-784e-4b1c-890b-b1e971c84d47 ro  quiet splash $vt_handoff
    echo  'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.13.0-26-generic
  }

Windows 10

menuentry 'Windows Boot Manager (on /dev/sdb2)' --class windows --class os $menuentry_id_option 'osprober-efi-18E3-6B87' {
  insmod part_gpt
  insmod fat
  set root='hd1,gpt2'
  if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  18E3-6B87
  else
    search --no-floppy --fs-uuid --set=root 18E3-6B87
  fi
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

如果你想添加自定义启动项,你可以编辑/etc/grub.d/40_custom文件,仿照上面的格式添加启动项:

添加linux启动项

menuentry "Linux Name" {
  set root=(hd0,2) # 系统所在位置
  linux /boot/vmlinuz # 引导内核
  initrd /boot/initrd.img # 临时内核
}

添加Windows启动项

menuentry "Windows" {
  insmod part_gpt # 载入模块,下同
  insmod fat
  set root='hd1,gpt2' # 系统所在位置
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi # UEFI启动的Windows的efi引导文件
}

添加‘关机’项

menuentry "System shutdown" {
  echo "System shutting down..."
  halt
}

添加‘重启’项

menuentry "System restart" {
  echo "System rebooting..."
  reboot
}

每当你修改了这些配置文件,都需要输入下面的命令来重新生成grub.cfg文件

$ grub-mkconfig -o /boot/grub/grub.cfg

UEFI启动

现在大部分的电脑都支持UEFI启动,如果你使用UEFI启动且磁盘使用GPT分区表,你需要安装软件包efibootmgr来生成.efi文件,默认位于/boot/EFI/grubx64.efi。

使用下面的命令来生成UEFI模块在/boot/grub/x86_64-efi目录下

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub

如果你想在Windows系统中编辑或添加UEFI启动项,你可以使用EasyUEFI软件(在非企业版系统中免费),EasyBCD只能在传统(legacy)启动中使用。