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
Last modification:May 11, 2024
如果觉得我的文章对你有用,请随意赞赏