
# Example crontab to backup DUCC database

# -----------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# -----------------------------------------------------------------------

# Revise the day-of-week backup each day at 3:30 AM

30 3 * * 0 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Sun.tar.gz 1>/backups/ducc/backup_db/Sun.backup.log 2>&1
30 3 * * 1 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Mon.tar.gz 1>/backups/ducc/backup_db/Mon.backup.log 2>&1
30 3 * * 2 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Tue.tar.gz 1>/backups/ducc/backup_db/Tue.backup.log 2>&1
30 3 * * 3 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Wed.tar.gz 1>/backups/ducc/backup_db/Wed.backup.log 2>&1
30 3 * * 4 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Thu.tar.gz 1>/backups/ducc/backup_db/Thu.backup.log 2>&1
30 3 * * 5 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Fri.tar.gz 1>/backups/ducc/backup_db/Fri.backup.log 2>&1
30 3 * * 6 /home/ducc/ducc_runtime/admin/db_tool --save-overwrite /backups/ducc/backup_db/Sat.tar.gz 1>/backups/ducc/backup_db/Sat.backup.log 2>&1
