【问题标题】:How do i backup all files listed in crontab如何备份 crontab 中列出的所有文件
【发布时间】:2013-12-03 10:23:44
【问题描述】:

我正在尝试备份 crontab 条目结构和在 crontab 下运行的文件。

但我不知道如何在 crontab -l 中搜索文件并复制在其下运行的脚本。

我可能的方法

我已经列出了

crontab -l > test.txt 

cat test.txt 

但是列表后如何搜索文件。

我的条目是这样的:

# daily pingback report
30 1 * * * php /var/opx/cron-script/daily-email-reports/pingback_report.php | curl --data-binary @- https://pxc.com/email/send

# --------------------------------------------------------------------------------------------------
# daily jobs 02+ hours
# --------------------------------------------------------------------------------------------------

# daily Failed Device Search
0 2 * * *  /var/opx/cron-script/failed_device_search.sh

# daily Device Not Detected (we are not getting any of these, so commenting out)
# 5 2 * * *  /var/opx/cron-script/device_not_detected.sh

    # daily Failed App Search (we are not getting any of these, so commenting out)
    # 10 2 * * *  /var/opx/cron-script/failed_app_search.sh

    # daily oss event report (uncomment when dev db issue is fixed)
    10 3 * * * /var/opx/cron-script/event-analysis/daily-oss-event-report

    # Copy tomcat logs from s1 and s2 , compress them and move to S3 storage
    #30     21      *       *       *       /var/opx/cron-script/log_backup.sh

我想复制在这些条目中运行的脚本。

【问题讨论】:

    标签: linux bash shell crontab


    【解决方案1】:

    试试这个:

    for part in $(sed 's/#.*//' test.txt | while read t1 t2 t3 t4 t5 main; do echo $main; done); do
      echo $part
    done | grep / | grep -v ://
    

    对于您的示例,这将打印:

    /var/opx/cron-script/daily-email-reports/pingback_report.php
    /var/opx/cron-script/failed_device_search.sh
    /var/opx/cron-script/event-analysis/daily-oss-event-report
    

    我并不为此感到自豪,但它是相当便携的外壳,并且似乎适用于您提供的案例。您可能需要更智能的解析器来处理更复杂的情况,或者处理 crontab 中可能存在的更晦涩的单词。

    【讨论】:

      【解决方案2】:

      如果有人想备份 cron,这是我的脚本

      #!/bin/bash
      
          #This Script use for backup of crontab files and entries
          #Modify as per your need
      
          mkdir -p /mnt/cron_backups
          for part in $(crontab -l | grep -v "clientmqueue" | sed 's/#.*//' | while read t1 t2 t3 t4 t5 main; do echo $main; done); do
            echo $part
          done | grep / | grep -v :// | while read -r row
                                            do
                                              scp $row /mnt/cron_backups/
                                              crontab -l > /mnt/cron_backups/backup_cron.txt 
                                              tar -cvzf  /mnt/cron_backups.tar.gz /mnt/cron_backups/
      
                                            done
          # grep -v is used for ignoring specific script with specific words or character 
      

      感谢约翰....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-24
        • 2012-06-28
        • 1970-01-01
        • 2020-08-23
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        • 2021-03-07
        相关资源
        最近更新 更多