DocumentsDate added
Concept
The "weekly backup script (All DBs)" is composed of 2 shell script.
A first one that is called by the cront
A second one that perform the operation.
For the customization, you need to update the "cron" one and potentially the email notification present in the second shell.
This script save the backup in a subdirectory "weekly" followed by a subdirectory with the name of the day.
So that you have maximum 7 subdirectories (one for each day of the week).
Installation
- Download the "backup_alldbs.zip"
- Unzip the files into a directory present on your server and that can be called by cron
We suggest that you create a "backup/cpanel" directory on your server and that you put the script in this directory.
The result of the backup will be stored in directory like
backup/weekly/Monday/BackupName.tgz
backup/weekly/Tuesday/BackupName.tgz
backup/weekly/Wednesday/BackupName.tgz
backup/weekly/Thirsday/BackupName.tgz
backup/weekly/Friday/BackupName.tgz
backup/weekly/Saturday/BackupName.tgz
backup/weekly/Sunday/BackupName.tgz - With a chmod, change the permission of the file to add the "execute" attribute
Syntax
Most of the parameters are defined in the "backup_alldbs_cron.sh".
This script can do a lot:
- It is possible to send the backup on 1 or 2 FTP account outside the server
- It is also possible to encrypt the compressed file when the FTP is sent on server that you do not control.
- It is possible to send an email notification when the backup is completed.
Limitations
- It is assumed that the DB is located in the "localhost".
If you want to perform backup from DB that are located on another server, you will have to modify the "mysqldump" - The DB backup is performed with NO table locking and also ignore the SQL error that would stop the script.
If you want to perform a backup with "table locked", remove the "--lock-tables=false" command in the mysqldump - We recommand to avoid using special characters in the FTP password.
If you have special character, perhaps you should change the syntax of the LFTP to autorise that.
We have considered that a specific FTP user and FTP password would be used to transfert the backup on another server. - Avoid using a $ (dollar) character in the DB password.
The $ is generally used in the shell script to identify variable.
remark:
The FTP transfert use a "lftp" command.
If this LFTP is not installed on your server, you can use a "yum install lftp".
In case where you have an error on Perl library dependencies error, see also the following article that may help you.
https://forums.cpanel.net/f34/missing-dependency-lftp-install-242641.html
See also the other weekly backup script for single website.
Concept
The "weekly backup script" is a shell script that can be used in a cron of you hosting environment in aim to perform the backup of a DB and the backup of a directory on the disk.
This script save the backup in a subdirectory "weekly" followed by a subdirectory with the name of the day.
So that you have maximum 7 subdirectories (one for each day of the week).
Installation
- Download the "backup_weekly.sh"
- Transfert the "backup_weekly.sh" script by FTP or other tool on your server.
We suggest that you create a "backup" directory on your server and that you put the script in this directory.
The result of the backup will be stored in directory like
backup/weekly/Monday/BackupName.tgz
backup/weekly/Tuesday/BackupName.tgz
backup/weekly/Wednesday/BackupName.tgz
backup/weekly/Thirsday/BackupName.tgz
backup/weekly/Friday/BackupName.tgz
backup/weekly/Saturday/BackupName.tgz
backup/weekly/Sunday/BackupName.tgz - With a chmod, change the permission of the file to add the "execute" attribute
Syntax
The backup shell script contain several parameters:
Mandatory parameters
- $1 = backup name.
This will create a subdirectory with this name in the weekly/Day/[backup name] - $2 = Joomla PHP Code directory to backup
- $3 = DB name
- $4 = DB user
- $5 = DB password
- $6 = FTP URL
- $7 = FTP User
- $8 = FTP Psw
- $9 = FTP remote directory where to save the file.
A weekly subdirectory with the day name is automatically created in the remote directory specified.
The parameters are divided in 2 categories.
The first parameters allows specifying the DB parameters and the directory that must be backup.
Sample syntax
The following syntax assume that you are in the directory where you have copied the "backup_weekly.sh" and that you are logged on your server with SSH.
- backup_weekly.sh test /home/CPANEL_ACCOUNT/domains/jms2win.com/subdomains/master/public_html dbname dbuser "DB-Password" ftp.yourdomain.com ftpuser ftppassword /backup/
This execute a backup that will be named "test" and for which the result is send by FTP into an FTP root directory '/backup/'
The result will be stored in "/backup/weekly/DAY/test.tgz"
- backup_weekly.sh test /home/CPANEL_ACCOUNT/domains/jms2win.com/subdomains/master/public_html dbname dbuser "DB-Password" ftp.yourdomain.com ftpuser ftppassword
Same as the previous case but the FTP Root directory is empty. So it is assume that it is sent in the home directory of the FTP account.
The result will be stored in "/weekly/DAY/test.tgz"
- backup_weekly.sh test /home/CPANEL_ACCOUNT/domains/jms2win.com/subdomains/master/public_html dbname dbuser "DB-Password"
Backup without FTP transfert.
The backup remain in the local directory as follow "weekly/DAY/test.tgz"
Limitations
- It is assumed that the DB is located in the "localhost".
If you want to perform backup from DB that are located on another server, you will have to modify the "mysqldump" - The DB backup is performed with NO table locking and also ignore the SQL error that would stop the script.
If you want to perform a backup with "table locked", remove the "--lock-tables=false" command in the mysqldump - We recommand to avoid using special characters in the FTP password.
If you have special character, perhaps you should change the syntax of the LFTP to autorise that.
We have considered that a specific FTP user and FTP password would be used to transfert the backup on another server. - Avoid using a $ (dollar) character in the DB password.
The $ is generally used in the shell script to identify variable.
remark:
The FTP transfert use a "lftp" command.
If this LFTP is not installed on your server, you can use a "yum install lftp".
In case where you have an error on Perl library dependencies error, see also the following article that may help you.
https://forums.cpanel.net/f34/missing-dependency-lftp-install-242641.html
htaccess that add security on some joomla directory to forbid the access or excluding the execution of PHP files.
Installation
@font-face { font-family: Cambria Math; } @font-face { font-family: Calibri; } @page WordSection1 {size: 612.0pt 792.0pt; margin: 70.85pt 70.85pt 70.85pt 70.85pt; } P.MsoNormal { MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt } LI.MsoNormal { MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt } DIV.MsoNormal { MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt } A:link { COLOR: #0563c1; TEXT-DECORATION: underline; mso-style-priority: 99 } SPAN.MsoHyperlink { COLOR: #0563c1; TEXT-DECORATION: underline; mso-style-priority: 99 } A:visited { COLOR: #954f72; TEXT-DECORATION: underline; mso-style-priority: 99 } SPAN.MsoHyperlinkFollowed { COLOR: #954f72; TEXT-DECORATION: underline; mso-style-priority: 99 } SPAN.EmailStyle17 { FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d; mso-style-type: personal-reply } .MsoChpDefault { FONT-SIZE: 10pt; mso-style-type: export-only } DIV.WordSection1 { page: WordSection1 }
- cache (interdiction d'exécuter un PHP)
- images (interdiction d'exécuter un PHP)
- logs (interdiction d'accéder au répertoire)
- media (interdiction d'exécuter un PHP)
- tmp (interdiction d'accéder au répertoire)
This can be usefull to avoid publishing a possible sensitive information for hackers.