Linux 一次执行多个命令的3种方式

如果你每天使用 Linux,就会发现 Shell 命令是你处理文件、安装和配置系统软件时最强大的工具。如果能在一条命令中执行多个命令,那么将节省大量时间,变得更加高效。

在本篇文章中,我们将看到如何在一条命令中通过高效组合使多个命令一起执行。

Read More >

Linux定时自动备份数据

鉴于上次的服务器崩溃事件,写一个数据自动备份脚本就显得尤为重要。折腾了一晚,最终实现效果是每晚三点自动备份数据库和网站等数据并使用Openssl加密归档,保留最近一个月的数据,通过rclone同步到Google Drive和Onedrive上,这样就万无一失了🍟

Shell脚本

脚本是自己使用,因此比较简单。

#!/bin/bash
# Writen by Atp on Nov 15, 2020
# Website:  https://www.zatp.com

DATE=`date +%Y%m%d`
BACKUP_TEMP_PATH=/backup/tmp
# Database
DB_NAME=
DB_USR=
DB_PW=
DB_OUT_NAME="db_$DATE"
# Website
WEB_PATH=
WEB_OUT_NAME="web_$DATE"
# Archive
ARCHIVE_PATH=/backup/archives
ARCHIVE_LOG_FILE=/backup/log/backup.log

# Backup mysql
# mysqldump -u$DB_USR -p$DB_PW --databases $DB_NAME > $BACKUP_TEMP_PATH/$DB_OUT_NAME.sql
mysqldump --login-path=$DB_USR --databases $DB_NAME > $BACKUP_TEMP_PATH/$DB_OUT_NAME.sql

# Backup webdsite
cd $WEB_PATH
zip -rq $BACKUP_TEMP_PATH/$WEB_OUT_NAME.zip *

# Archive files
cd $BACKUP_TEMP_PATH
# tar cf - * | openssl enc -e -aes-128-cbc -pbkdf2 -k [password] -out $ARCHIVE_PATH/$DATE.tar.aes
tar cf - * | gpg -e -r [recipient] -o $ARCHIVE_PATH/$DATE.tar.gpg

# Backup the latest 30 days
rm $BACKUP_TEMP_PATH/*
find $ARCHIVE_PATH -name "*.tar.gpg" -type f -mtime +30 -exec rm {} \;

# Sync to Google Drive
rclone sync $ARCHIVE_PATH gdrive:[sync path]

# Sync to Microsoft OneDrive
rclone sync $ARCHIVE_PATH onedrive:[sync path]

# Output log file
echo -e "\e[1;32m---------------------------------------------\e[0m" >> $ARCHIVE_LOG_FILE
echo -e "Backup date: "$(date +%Y-%m-%d)"\t""Finish time: "$(date +%H:%M:%S) >> $ARCHIVE_LOG_FILE
echo -e "\e[1;32m---------------------------------------------\e[0m\n" >> $ARCHIVE_LOG_FILE

Read More >

用Docker整合SeafilePro搭建私人云盘

现在的网盘越来越辣鸡,倒不是说体验不好,天朝带宽这么贵的情况下,30一个月也还算划算(暗示),但天天扫描网盘上的文件就不能忍了😕,毕竟不是每个人都愿意用隐私换取便利(再次暗示),因此剁手购入大盘独服,自己搭建一个网盘使用。在平台的选择过程中最后纠结于Nextcloud和Seafile,都搭建体验之后最终选择了Seafile,比较PHP的文件管理性能略显拉跨。

Seafile是一款开源的企业云盘,注重可靠性和性能。支持Windows, Mac, Linux, iOS, Android多平台文件同步或者直接挂载到本地访问。专业版也免费支持最多三个用户,足以满足要求,顺便试一下用Docker部署,第一次使用Docker也遇到了一些坑,也作为记录。

Read More >

搭建自己的kms服务器

用吃灰的vps搭建kms服务器,可以激活vol版本的Windows/Office用来供学习使用🥤

安装vlmcsd

下载最新版本的vlmcsd

解压后进入linux下的目录

tar -zxvf binaries.tar.gz
cd binaries/Linux/intel/static/

根据硬件和系统版本选择合适的程序授予执行权限后运行即可

可以用下面的命令指定运行的端口号(默认1688):

vlmcsd -L 0.0.0.0:xxxx

可以直接用ip+端口,也可以绑定域名并用Nginx进行转发

upstream kms_forward {
    server localhost:xxxx;
}

server {
    listen       80;
    server_name  kms.domain.com;
    access_log off;

    location / {
        proxy_pass http://backend$request_uri;
        proxy_set_header  Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  10m;
    }
}

最后设置开机启动,确保不会因为重启导致激活失败

Read More >

使用Chevereto搭建个人图床

目前本站的图片使用的是 jsdliver+Github,虽然很好用,但偶尔会抽风,导致图片全部不显示,因此搭建一个自己的备用图床就很重要(吃灰小鸡再利用),图床程序选择了Chevereto,接下来介绍两种方法:

提前准备LNMP环境,为 Chevereto 建好用户数据库,此处略过。

方法一:使用 installer.php 安装

直接上官网 DOWNLOAD INSTALLER
放在网站目录下,打开 http://domin/installer.php 根据提示安装,缺啥装啥,没权限的该加就加

不过我安装的时候居然提示不支持php7.3
。。。

故使用另一种方法🙃

方法二:源码安装

1.下载源码:

git clone https://github.com/Chevereto/Chevereto-Free

2.同样给PHP用户添加读写权限,并改变为Chevereto所在路径的所有者

chmod -R 755 /wwwroot/chevereto
chown -R www:www /wwwroot/chevereto

3.修改 nginx 配置,添加如下配置:

# Context limits
client_max_body_size 20M;

# Disable access to sensitive files
location ~* /(app|content|lib)/.*\.(po|php|lock|sql)$ {
  deny all;
}

# Image not found replacement
location ~ \.(jpe?g|png|gif|webp)$ {
    log_not_found off;
    error_page 404 /content/images/system/default/404.gif;
}

# CORS header (avoids font rendering issues)
location ~* /.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
  add_header Access-Control-Allow-Origin "*";
}

# Pretty URLs
location / {
  index index.php;
  try_files $uri $uri/ /index.php$is_args$query_string;
}

# END Chevereto NGINX rules


Read More >

使用aria2下载文件

安装aira2

CentOS7下安装

安装 EPEL 源及源管理工具:

yum install epel-release yum-utils

安装 REMI 源:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install aria2

Debian10下安装

apt insatll aria2

安装后使用命令 aria2c -v 查看aria2的版本号

Read More >

配置frp实现内网穿透

frp是一个可用于内网穿透的高性能的反向代理应用,支持tcp,udp协议,为http和https应用协议提供了额外的能力,且尝试性支持了点对点穿透。

服务端

下载对应版本的frp压缩包,解压到指定目录,解压后 chmod +x frps 授予可执行权限。修改配置文件frps.ini

[common]
# frp 服务端端口
bind_port = 7000

# frp 服务端密码,配置客户端时用到
token = 12345678

# 认证超时时间,默认为900秒
authentication_timeout = 900

# 网页管理端口
dashboard_port = 7500

# 仪表盘访问的用户名密码
dashboard_user = admin
dashboard_pwd = admin

# 使用 frp 穿透访问内网中的网站,不设置则不会开启这项功能
vhost_http_port = 10080
vhost_https_port = 10443

配置好之后使用 ./frps -c frps.ini 启动服务端

Read More >