rsyncd
服务启动脚本
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf
[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"
[Install]
WantedBy=multi-user.target
EnvironmentFile:指读取环境变量的文件
ConditionPathExists:指定了一个路径条件,当这个路径存在时,服务才会被启动。
这里的指向了配置文件。但是这个是默认配置文件的位置。如果要更换配置文件还是需要在ExecStart
指定
比方说:
[Service]
EnvironmentFile=/etc/rsyncd/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach --config=/path/to/your/rsyncd.conf "$OPTIONS"
/etc/sysconfig/rsyncd
OPTIONS=""
rsync执行命令和使用方法
#!/bin/bash
# 设置UTF-8字符集
export LANG=zh_CN.UTF-8
#项目名称
name="Tianmu_PHP"
# 设置备份目录
base_backup_dir="/rsync_backup"
backup_dir="${base_backup_dir}/${name}_$(date +%Y%m%d_%H%M%S)"
# 设置密码
password="Qidong"
# 设置源和目标目录
source_dir="/data/web/Tianmu_PHP/"
target_dir="xiaozhao@111.222.333.111::test"
# 设置排除的目录数组
exclude_dirs=(
"/public"
".env"
".git"
"runtime"
".evn.example"
"${base_backup_dir}"
)
# 生成排除文件
exclude_file=$(mktemp)
for dir in "${exclude_dirs[@]}"; do
echo "$dir" >> "$exclude_file"
done
# 生成临时密码文件
password_file=$(mktemp)
echo "$password" > "$password_file"
# 执行同步和备份
sync_and_backup() {
rsync -avltzpv --progress --delete --backup --backup-dir="$backup_dir" --exclude-from="$exclude_file" --password-file="$password_file" "$source_dir" "$target_dir"
}
# 显示目标IP地址
show_ip() {
echo "目标IP地址: $(echo "$target_dir" | cut -d ':' -f 1)"
}
# 执行同步和备份
sync_and_backup
# 显示目标IP地址
show_ip
echo "同步完成!"
如果不需要密码:
# 设置密码
password=""
# 设置源和目标目录
source_dir="/home/git/codes/Tianmu_PHP/"
target_dir="127.0.0.1::tianmu"
只上传模式
只上传个别几个文件和目录利用find
命令
#!/bin/bash
# 指定要扫描的目录
directory="/Users/zhaoqidong/Downloads"
# 定义只上传的目录和文件
include_dirs=(
"epub书"
"Thumbs.db"
)
# 构建find命令的排除选项
exclude_options=()
for dir in "${include_dirs[@]}"; do
exclude_options+=(-not -path "$directory/${dir}")
done
echo "排除选项:${exclude_options[@]}"
exclude_file=$(mktemp)
# 使用find命令扫描目录下一级的目录和文件,排除指定的目录和文件
find "$directory" -maxdepth 1 -mindepth 1 "${exclude_options[@]}" | while read -r item; do
# 输出扫描到的一级目录和文件
if [ -d "$item" ]; then
echo "/${item#$directory/}" >> "$exclude_file"
elif [ -f "$item" ]; then
echo "/${item#$directory/}" >> "$exclude_file"
fi
done
redis
服务启动脚本
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
other其他脚本用法
[Unit]
Description=Your Service Description
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/git/codes/Tianmu_PHP
ExecStart=/usr/local/php/bin/php think swoole restart
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target