DirectAdmin Backup To S3 And spaces

การสนับสนุนสำหรับ webhosts ที่ใช้ CentOS
ตอบกลับ
รูปประจำตัวสมาชิก
slwt2002
Administrator
โพสต์: 109
ลงทะเบียนเมื่อ: พุธ 24 มิ.ย. 2015 18:03

DirectAdmin Backup To S3 And spaces

โพสต์ โดย slwt2002 »

DirectAdmin Backup To S3 And spaces

1.install composer

โค้ด: เลือกทั้งหมด

cd /usr/local/directadmin/custombuild
./build update
./build composer
2.

โค้ด: เลือกทั้งหมด

mkdir /home/admin/tools

โค้ด: เลือกทั้งหมด

cd /home/admin/tools

โค้ด: เลือกทั้งหมด

wget https://github.com/powerkernel/directadmin-s3-backup/archive/master.zip
3.extract to /home/admin/tools/directadmin-s3-backup

โค้ด: เลือกทั้งหมด

unzip master.zip

โค้ด: เลือกทั้งหมด

mv directadmin-s3-backup-master directadmin-s3-backup
4.

โค้ด: เลือกทั้งหมด

cd /home/admin/tools/directadmin-s3-backup

โค้ด: เลือกทั้งหมด

cp config.sample.php config.php

โค้ด: เลือกทั้งหมด

vi config.php

โค้ด: เลือกทั้งหมด

<?php
/**
 * @author Harry Tang <harry@powerkernel.com>
 * @link https://powerkernel.com
 * @copyright Copyright (c) 2018 Power Kernel
 */

return [
    'credentials' => [
        'key' => 'YOUR_AWS_KEY',
        'secret' => 'YOUR_AWS_SECRET',
    ],
    'region' => 'ap-southeast-1',
    'bucket'=>'you-bucket-name',
    'expiration'=>3,
	//'endpoint' => 'https://sfo2.digitaloceanspaces.com', //enable this for digitalocean space	
];

โค้ด: เลือกทั้งหมด

composer update
5.

โค้ด: เลือกทั้งหมด

cd /usr/local/directadmin/scripts/custom

โค้ด: เลือกทั้งหมด

vi ftp_upload.php

โค้ด: เลือกทั้งหมด

#!/bin/sh
if [ ${ftp_ip} == "127.0.0.1" ] && [ ${ftp_username} == "admin" ]; then
	RET=0;
	php /home/admin/tools/directadmin-s3-backup/ftp_upload_s3.php $ftp_local_file $ftp_remote_file 2>&1
	RET=$?	
else
	FTPPUT=/usr/bin/ncftpput
	CURL=/usr/local/bin/curl
	OS=`uname`;
	DU=/usr/bin/du
	BC=/usr/bin/bc
	EXPR=/usr/bin/expr
	TOUCH=/bin/touch
	PORT=${ftp_port}
	FTPS=0
	MD5=${ftp_md5}

	if [ "${ftp_secure}" = "ftps" ]; then
		FTPS=1
	fi

	#######################################################
	# SETUP

	if [ ! -e $TOUCH ] && [ -e /usr/bin/touch ]; then
		TOUCH=/usr/bin/touch
	fi
	if [ ! -x ${EXPR} ] && [ -x /bin/expr ]; then
		EXPR=/bin/expr
	fi

	if [ ! -e "${ftp_local_file}" ]; then
		echo "Cannot find backup file ${ftp_local_file} to upload";

		/bin/ls -la ${ftp_local_path}

		/bin/df -h

		exit 11;
	fi

	get_md5() {
		MF=$1

		if [ ${OS} = "FreeBSD" ]; then
			MD5SUM=/sbin/md5
		else
			MD5SUM=/usr/bin/md5sum
		fi
		if [ ! -x ${MD5SUM} ]; then
			return
		fi

		if [ ! -e ${MF} ]; then
			return
		fi

		if [ ${OS} = "FreeBSD" ]; then
			FMD5=`$MD5SUM -q $MF`
		else
			FMD5=`$MD5SUM $MF | cut -d\  -f1`
		fi

		echo "${FMD5}"
	}

	#######################################################

	CFG=${ftp_local_file}.cfg
	/bin/rm -f $CFG
	$TOUCH $CFG
	/bin/chmod 600 $CFG

	RET=0;


	#######################################################
	TIMEOUT=120

	#dynamic timeout for nctpput.
	#Curl kicks the control connection with keep-alive pings by default.
	SIZE_GIG=0
	SECONDS_PER_GIG=120
	if [ -x ${DU} ]; then
		if [ "${OS}" = "FreeBSD" ]; then
			SIZE_GIG=`BLOCKSIZE=G ${DU} -A ${ftp_local_file} | cut -f1`
		else
			SIZE_GIG=`${DU} --apparent-size --block-size=1G ${ftp_local_file} | cut -f1`
		fi

		if [ "${SIZE_GIG}" -gt 1 ]; then
			NEW_TIMEOUT=$TIMEOUT

			if [ -x ${BC} ]; then
				NEW_TIMEOUT=`echo "${SIZE_GIG} * ${SECONDS_PER_GIG}" | ${BC}`
			elif [ -x ${EXPR} ]; then
				NEW_TIMEOUT=`${EXPR} ${SIZE_GIG} \* ${SECONDS_PER_GIG}`
			else
				echo "Cannot find ${BC} nor ${EXPR} for ftp upload timeout change on large file: ${SIZE_GIG} Gig.";
			fi

			#make sure it's a useful number
			if [ "${NEW_TIMEOUT}" -gt "${TIMEOUT}" ]; then
				TIMEOUT=${NEW_TIMEOUT};
			fi
		fi
	fi

	#######################################################
	# FTP
	upload_file()
	{
		if [ ! -e $FTPPUT ]; then
			echo "";
			echo "*** Backup not uploaded ***";
			echo "Please install $FTPPUT by running:";
			echo "";
			echo "cd /usr/local/directadmin/scripts";
			echo "./ncftp.sh";
			echo "";
			exit 10;
		fi

		/bin/echo "host $ftp_ip" >> $CFG
		/bin/echo "user $ftp_username" >> $CFG
		/bin/echo "pass $ftp_password" >> $CFG

		if [ ! -s ${CFG} ]; then
			echo "${CFG} is empty. ncftpput is not going to be happy about it.";
			ls -la ${CFG}
			ls -la ${ftp_local_file}
			df -h
		fi

		$FTPPUT -f $CFG -V -t ${TIMEOUT} -P $PORT -m "$ftp_path" "$ftp_local_file" 2>&1
		RET=$?

		if [ "${RET}" -ne 0 ]; then
			echo "ncftpput return code: $RET";
		fi
	}

	#######################################################
	# FTPS
	upload_file_ftps()
	{
		if [ ! -e ${CURL} ]; then
			CURL=/usr/bin/curl
		fi

		if [ ! -e ${CURL} ]; then
			echo "";
			echo "*** Backup not uploaded ***";
			echo "Please install curl by running:";
			echo "";
			echo "cd /usr/local/directadmin/custombuild";
			echo "./build curl";
			echo "";
			exit 10;
		fi

		/bin/echo "user =  \"$ftp_username:$ftp_password\"" >> $CFG

		if [ ! -s ${CFG} ]; then
			echo "${CFG} is empty. curl is not going to be happy about it.";
			ls -la ${CFG}
			ls -la ${ftp_local_file}
			df -h
		fi

		#ensure ftp_path ends with /
		ENDS_WITH_SLASH=`echo "$ftp_path" | grep -c '/$'`
		if [ "${ENDS_WITH_SLASH}" -eq 0 ]; then
			ftp_path=${ftp_path}/
		fi

		${CURL} --config ${CFG} --ftp-ssl -k --silent --show-error --ftp-create-dirs --upload-file $ftp_local_file  ftp://$ftp_ip:${PORT}/$ftp_path$ftp_remote_file 2>&1
		RET=$?

		if [ "${RET}" -ne 0 ]; then
			echo "curl return code: $RET";
		fi
	}

	#######################################################
	# Start

	if [ "${FTPS}" = "1" ]; then
		upload_file_ftps
	else
		upload_file
	fi

	if [ "${RET}" = "0" ] && [ "${MD5}" = "1" ]; then
		MD5_FILE=${ftp_local_file}.md5
		M=`get_md5 ${ftp_local_file}`
		if [ "${M}" != "" ]; then
			echo "${M}" > ${MD5_FILE}

			ftp_local_file=${MD5_FILE}
			ftp_remote_file=${ftp_remote_file}.md5

			if [ "${FTPS}" = "1" ]; then
				upload_file_ftps
			else
				upload_file
			fi
		fi
	fi

	/bin/rm -f $CFG

	exit $RET
fi
6.

โค้ด: เลือกทั้งหมด

cd /usr/local/directadmin/scripts
./ncftp.sh
7.Go to DirectAdmin/ Admin Backup/Transfer
Step 3: Where
IP: 127.0.0.1
admin/pass
Port: 21
Secure FTP: FTPS

ที่มา : https://github.com/powerkernel/directadmin-s3-backup
ไม่มีลายเซ็นต์ ขอเขียนแล้วกัน
ตอบกลับ