Reaper
Reaper

Reputation: 31

Trouble running tar from crontab

When I want to compress a folder manually I use the command:

tar -zcvf $dirBackup-$actualTime.tgz $dirBackup; 

And it works perfectly. Also when I decompress the archive the result is correct.

But I have a problem when I run the same command from crontab: the resulting tgz only appears to contain an empty file.

crontab -l>> /home/user/Desktop/test/temp;
echo "$min $hour * * * tar -zcvf $dirBackup-$actualTime.tgz $dirBackup">> temp;
crontab temp;

Do I need to change anything in the crontab expression? Do I have to be root to run crontab? The file temp is created correctly, and located in the right folder.

Thanks a lot for your attention!

Upvotes: 1

Views: 703

Answers (2)

iqstatic
iqstatic

Reputation: 2382

You need to set the value of the variables in the echo command you are using to add entry into the cron job. A sample script should look like this:

#!/bin/bash

min=30
hour=17
dirBackup=/home/user/Desktop
actualTime=30-04-2015

crontab -l >> /home/user/temp
echo "$min $hour * * * tar -zcvf $dirBackup-$actualTime.tgz $dirBackup 2>&1 | tee /tmp/cron.log">> /home/user/temp;
crontab /home/user/temp;

The resulting tar file will be created in the user's HOME directory (user with which the cron is run).

To avoid getting into user permission issues, you can specify the user with which the cron is to be run using the following command:

crontab -u <username> <cron_file>

Upvotes: 1

lcd047
lcd047

Reputation: 5861

Depending on your system, crontab jobs may or may not be run in your $HOME directory (in fact they are typically run either in / or in /var/cron). Add a cd $HOME; before the tar command.

Upvotes: 1

Related Questions