Les travaux suivants:
/usr/bin/mysqldump -u[username] -p[password] --all-databases --single-transaction > /home/[domain]/public_html/backups/full_backup_`date -I`.sql
5 Réponses :
Utiliser édité fort> P> Pour éviter les sujets longs dans des courriels de cron, utilisez Créer un fichier date +% y-% m-% d_% h-% m-% s code> (ou tout autre format):
/ home /
[cron parameters] /home/<your user>/mycron.sh
Salut j'utilise cpanel x et j'ai été envoyé par courrier électronique: / bin / sh: -c: ligne 0: EOF inattendu lors de la recherche de "` "/ bin / sh: -C: ligne 1: erreur de syntaxe: extrémité inattendue de déposer
Dans mon précédent poste, vous voudrez peut-être supprimer les nouvelles lignes et les backslashes `\`. Je les ai bien placés ici pour la lisibilité du forum. Je suis édité.
Oui, j'ai enlevé les backslashes. BTW dans la ligne d'objet de l'e-mail, cela m'envoie qu'il a initialement dit "... / public_html / sauvegarde / FULL_BACKUP_ date -i code> .sql" mais maintenant "... / public_html / sauvegarde / FULL_BACKUP_`DATE + "
Voir mon édition. Le sujet de l'email ne sera pas interprété. Vous pouvez utiliser un script pour que le sujet soit plus court (seul le chemin du script) au lieu de la commande complète
Mon point n'est pas qu'il y a un problème avec le sujet du courrier électronique. La chose est que date -i code> fonctionne et tout autre format type de date donne des erreurs. (Je n'ai reçu qu'un email quand il y a une sorte d'erreur - pour -i il n'y a généralement pas d'erreur et il crée le fichier SQL) Le manuel de commande de date indiqué par HD1 mentionné par -i ... je pense La solution est celle qui reconnaît l'option -i mais inclut également d'autres options.
OK je vois. Ouais, l'option -i n'est pas dans le manuel ( Stackoverflow. com / questions / 9650041 / ... ). Vous voudrez peut-être toujours utiliser un script et l'appeler par /foo/bar/mycron.sh `date -i` code> et ignorer l'option est le script: D
La commande date (1) a une option "+ [format]". Je pense que l'option que vous souhaitez est soit les options '% s' ou '% n', qui vous donneront des secondes ou des nanosecondes respectivement. De votre chemin pour MySQL, je vais supposer que vous êtes sous Linux. Si tel est effectivement le cas, vous pouvez trouver le Manpage ici qui vous donnera plus de détails . P>
J'utilise cPanel X .... entre l'option de date actuelle est -i ... Je n'arrive pas à voir cette option sur cette page man.
date -minutes code> pourrait être le moyen d'aller, qui utilise le format ISO 8601.
Le page wiki a quelques informations. P>
J'ai un travail de cron courir deux fois par jour et jusqu'à présent, il a ajouté: "FULL_BACKUP_2012-11-14T00: 00-0600.SQL" Je vais simplement vérifier que cela continue de travailler ...
Bien que mon script d'origine fonctionne, quelque chose comme ceci peut être beaucoup plus simple:
#!/bin/bash ########################################################################### # snapshot # # Rotates snapshots of backups using hard links # # Keeps track of: # - 48 hours of snapshots (48*60/interval) # - 60 days worth of midnight snapshots # - 24 months of snapshots from the 1st # Ussage: # snapshot /path/to/backup.sql.gz # mysqldump ... | gzip -c | snapshot /path/to/backup.sql.gz # ########################################################################### if ! hash date 2> /dev/null; then echo "-snapshot: date command not found" 1>&2 exit 1 fi if ! hash ln 2> /dev/null; then echo "-snapshot: ln: command not found" 1>&2 exit 1 fi # Date Info month=$(date +"%b") day=$(date +"%d") year=$(date +"%Y") time=$(date +"%H_%M") date=$(date +"%d%b%Y") dateFirst=$(date --date="$month 01" +"%d%b%Y" 2> /dev/null) # Test to see if we're using GNU date or BSD date if [ "$dateFirst" == "" ]; then dateFirst=$(date -v1d +"%d%b%Y") back2date=$(date -v-2d +"%d%b%Y") back2monthY=$(date -v-2m +"%b%Y") back2year=$(date -v-2y +"%Y") else back2date=$(date --date="-2 day" +"%d%b%Y") back2monthY=$(date --date="-2 month" +"%b%Y") back2year=$(date --date="-2 year" +"%Y") fi if [ "$dateFirst" == "" ]; then echo "-snapshot: Unknown version of date command." 1>&2 exit 1 fi # Directories filepath=$1 backup=$2 if [ "$filepath" == "" ]; then echo "-snapshot: Expecting filename as first argument" 1>&2 exit 1 fi if [ "$backup" == "" ]; then backup=/backup fi if [ ! -d "$backup" ]; then echo "-snapshot: Directory "$backup" doesn't exist" 1>&2 exit 1 fi snapshots=$backup/snapshots daily=$backup/daily monthly=$backup/monthly basename=${filepath##*/} ext=${basename#*.} basename=${basename%%.*} filename=$basename-$date-$time.$ext ############################## # Make new snapshot ############################## if [ ! -d "$snapshots/$date" ]; then mkdir -p "$snapshots/$date" fi if [ -t 0 ]; then if [ ! -f "$filepath" ]; then echo "-snapshot: '$filepath' doesn't exist" 1>&2 exit 1 fi ln "$filepath" "$snapshots/$date/$filename" else cat > "$snapshots/$date/$filename" fi ############################## # Daily/monthly snapshots ############################## if [ "$time" == "00_00" ]; then if [ ! -d "$daily/$month$year" ]; then mkdir -p "$daily/$month$year" fi ln "$snapshots/$date/$filename" "$daily/$month$year/$filename" if [ "$day" == "01" ]; then if [ ! -d "$monthly/$year" ]; then mkdir -p "$monthly/$year" fi ln "$snapshots/$date/$filename" "$monthly/$year/$filename" fi fi ############################## # Clean up old snapshots ############################## if [ -d "$snapshots/$back2date" ]; then rm -fr "$snapshots/$back2date" fi if [ -d "$daily/$back2monthY" ]; then rm -fr "$daily/$back2monthY" fi if [ -d "$monthly/$back2year" ]; then rm -fr "$monthly/$back2year" fi
Si vous voulez tout faire dans l'entrée CRONTAB (et non un script shell), voici comment:
/usr/bin/mysqldump -u[username] -p[password] --all-databases --single-transaction > /home/[domain]/public_html/backups/full_backup_`date +\%F_\%R`.sql
Je ne sais pas pourquoi cette question était fermée. Cela semble être une excellente question.