实现每次开机或重启时自动将 /home/user/Music/ 目录内容复制到 /tmp/,有几种可靠的自动化方案

方案一:使用 systemd 服务(推荐)

这是最可靠的方法,会在系统启动时以 root 权限自动执行:

  1. 创建复制脚本

    sudo nano /usr/local/bin/copy_music.sh
    

    内容:

    #!/bin/bash
    # 清空 /tmp 目录并复制 Music 内容
    rm -rf /tmp/*
    cp -rf /home/user/Music/* /tmp/
    logger "Music 目录内容已复制到 /tmp/"
    

    user 替换为您的实际用户名

  2. 设置脚本权限

    sudo chmod +x /usr/local/bin/copy_music.sh
    
  3. 创建 systemd 服务文件

    sudo nano /etc/systemd/system/copy-music.service
    

    内容:

    [Unit]
    Description=Copy Music to /tmp on boot
    After=network.target
    Requires=local-fs.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/copy_music.sh
    
    [Install]
    WantedBy=multi-user.target
    
  4. 启用并启动服务

    sudo systemctl daemon-reload
    sudo systemctl enable copy-music.service
    sudo systemctl start copy-music.service
    
  5. 验证服务状态

    systemctl status copy-music.service
    journalctl -u copy-music.service  # 查看日志
    

方案二:使用 cron 定时任务(@reboot)

适合不需要 root 权限的情况:

  1. 编辑当前用户的 cron 任务

    crontab -e
    
  2. 添加启动任务
    在文件末尾添加:

    @reboot sleep 10 && cp -rf /home/user/Music/* /tmp/
    

    user 替换为您的实际用户名
    sleep 10 确保系统完全启动后再执行

方案三:使用 rc.local(传统方法)

Ubuntu 20.04 默认禁用,需手动启用:

  1. 创建并启用 rc.local

    sudo nano /etc/rc.local
    

    内容:

    #!/bin/bash
    cp -rf /home/user/Music/* /tmp/
    exit 0
    
  2. 设置权限并启用服务

    sudo chmod +x /etc/rc.local
    sudo systemctl enable rc-local.service
    

方案四:使用登录脚本(用户登录后执行)

如果希望用户登录后才执行:

  1. 创建 ~/.config/autostart 项目
    mkdir -p ~/.config/autostart
    nano ~/.config/autostart/copy-music.desktop
    
    内容:
    [Desktop Entry]
    Name=Copy Music to tmp
    Type=Application
    Exec=/bin/bash -c "sleep 5 && cp -rf $HOME/Music/* /tmp/"
    

验证和注意事项

  1. 验证方法

    # 重启后检查
    ls /tmp
    # 检查日志(方案一)
    journalctl -u copy-music.service
    
  2. 重要注意事项

    • /tmp 目录在每次重启时会被自动清空,这是正常行为
    • 如果 Music 目录很大,复制可能需要一些时间
    • 确保源目录路径正确(检查用户名)
    • 使用 ls -ld /home/user/Music 确认目录是否存在和权限
    • 考虑在脚本中添加错误处理:
      # 在脚本中添加
      if [ ! -d "/home/user/Music" ]; then
          logger "错误:Music 目录不存在"
          exit 1
      fi
      

推荐方案:对于系统级别的自动化任务,使用 systemd 服务(方案一) 是最可靠的选择,它能确保在任何用户登录前执行,且拥有必要的权限。

如果遇到权限问题(如 /tmp 空间不足),可以考虑添加磁盘空间检查:

# 在脚本中添加
MIN_SPACE=100 # 100MB 最小空间
AVAILABLE=$(df -m /tmp | awk 'NR==2{print $4}')
if [ "$AVAILABLE" -lt "$MIN_SPACE" ]; then
    logger "警告:/tmp 空间不足 (可用: ${AVAILABLE}MB)"
    exit 1
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值