DirectAdmin Backup To S3 And spaces

การสนับสนุนสำหรับ webhosts ที่ใช้ CentOS

DirectAdmin Backup To S3 And spaces

โพสต์โดย slwt2002 » อังคาร 13 ต.ค. 2020 08:45

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
ภาพประจำตัวสมาชิก
slwt2002
Administrator
 
โพสต์: 98
ลงทะเบียนเมื่อ: พุธ 24 มิ.ย. 2015 19:03

ย้อนกลับไปยัง CentOS Webhosting Support

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 0 ท่าน

cron