{"id":539,"title":"\u72ec\u7acbftp\u73af\u5883\u642d\u5efa\u53ca\u5b9d\u5854ftp\u73af\u5883\u914d\u7f6e,\u4ee5\u53cashell\u5b9a\u65f6\u5907\u4efd\u591a\u6570\u636e\u5e93\u5e76\u8fdb\u884c\u538b\u7f29","good":0,"bad":0,"hit":1910,"created_at":"2021-08-25 18:21:26","content":"

https:\/\/cloud.tencent.com\/document\/product\/213\/10912?from=information.detail.%E5%85%8D%E8%B4%B9ftp%E6%9C%8D%E5%8A%A1%E5%99%A8<\/a> <\/p>

\u4ee5\u4e0a\u662f\u72ec\u7acb\u5b89\u88c5<\/p>

<\/p>

<\/p>

<\/p>

\u5982\u679c\u662f\u5728\u5b9d\u5854\u4e2d\u5b89\u88c5\u53ca\u914d\u7f6eftp<\/p>

\u5148\u5728\u5e94\u7528\u5546\u5e97\u5b89\u88c5PureFTPd<\/span><\/p>

\u5b89\u88c5\u5b8c\u6210\u540e\u4fee\u6539PureFTPd\u7684\u914d\u7f6e\u6587\u4ef6<\/span><\/p>

\u5c06ForcePassiveIP\u90a3\u884c\u6539\u6210\uff0c\u5982\uff1a<\/span><\/span><\/p>

ForcePassiveIP                \u5f53\u524d\u670d\u52a1\u5668ip<\/span><\/p>

\u4ee5\u4e0b\u8fd9\u884c\u6ce8\u91ca\u6253\u5f00\uff0c\u5728\u9632\u706b\u5899\u4e2d\u653e\u884c21\uff0c\u4ee5\u53ca39000\u523040000\u7aef\u53e3\uff08\u5b9d\u5854\u548c\u4e91\u670d\u52a1\u5668\u4e2d\u90fd\u8981\u653e\u884c\uff09<\/span><\/p>

PassivePortRange          39000 40000<\/span><\/p>

\u7136\u540e\u627e\u5230\u5b9d\u5854\u5de6\u53f3\u7684ftp\u83dc\u5355\uff0c\u6dfb\u52a0\u4e00\u4e2a\u8d26\u53f7\u548c\u5bc6\u7801\uff0c\u914d\u7f6e\u76ee\u5f55\u5373\u53ef<\/span><\/p>

\u53c2\u8003\uff1a<\/span>https:\/\/www.cnblogs.com\/jingccj\/p\/16785842.html<\/a><\/p>

<\/p>

\u4ee5\u4e0b\u662f\u591a\u6570\u636e\u5e93\u8fdb\u884c\u5b9a\u65f6\u5907\u4efd\u548c\u538b\u7f29\u7684shell\u811a\u672c<\/p>

\u6ce8\u610f\uff1a<\/p>

1\u3001\u811a\u672c\u8981\u5728linux\u4e0b\u7f16\u5199\uff0c\u5982\u679c\u662f\u5728windows\u4e0b\u7f16\u5199\u540e\u4e0a\u4f20\u4e0a\u4f20\u53ef\u80fd\u62a5\u9519\uff0c\u56e0\u4e3a\u6362\u884c\u7b26\u4e0d\u540c<\/span><\/p>

2\u3001mysqldump\u7684\u8def\u5f84\u6700\u597d\u914d\u6210\u7edd\u5bf9\u8def\u5f84\uff0c\u5982\u679c\u670d\u52a1\u5668\u4e0a\u6ca1\u6709\u914d\u7f6e\u73af\u5883\u53d8\u91cf\uff0c\u53ef\u80fd\u6267\u884c\u7684\u65f6\u5019\u627e\u4e0d\u5230\u5bf9\u5e94\u547d\u4ee4<\/span><\/p>

#!\/bin\/bash\n\n# \u6570\u636e\u5e93\u7528\u6237\u76f8\u5173\u914d\u7f6e\u4fe1\u606f\nDB_USER="root"  # \u66ff\u6362\u4e3a\u4f60\u7684\u6570\u636e\u5e93\u7528\u6237\u540d\nDB_PASS=""  # \u66ff\u6362\u4e3a\u4f60\u7684\u6570\u636e\u5e93\u5bc6\u7801\nBACKUP_DIR="\/www\/wwwroot\/backup"  # \u5907\u4efd\u6587\u4ef6\u5b58\u653e\u7684\u76ee\u5f55\uff0c\u66ff\u6362\u4e3a\u5b9e\u9645\u76ee\u5f55\n\n# \u8981\u5907\u4efd\u7684\u6570\u636e\u5e93\u540d\u79f0\u5217\u8868\uff0c\u7528\u7a7a\u683c\u5206\u9694\u4e0d\u540c\u7684\u6570\u636e\u5e93\u540d\nDB_NAMES="\u6570\u636e\u5e93\u540d1 \u6570\u636e\u5e93\u540d2"  # \u6839\u636e\u5b9e\u9645\u8981\u5907\u4efd\u7684\u6570\u636e\u5e93\u8fdb\u884c\u66ff\u6362\uff0c\u591a\u4e2a\u5e93\u7528\u7a7a\u683c\u5206\u9694\n\n# \u83b7\u53d6\u5f53\u524d\u65e5\u671f\uff0c\u7528\u4e8e\u6587\u4ef6\u540d\u4e2d\u4f53\u73b0\u5907\u4efd\u65f6\u95f4\nDATE=$(date +%Y%m%d)\n\n# \u5faa\u73af\u5907\u4efd\u6bcf\u4e2a\u6570\u636e\u5e93\u5e76\u538b\u7f29\nfor DB_NAME in $DB_NAMES\ndo\n    # \u6784\u5efa\u5907\u4efd\u6587\u4ef6\u540d\uff08\u672a\u538b\u7f29\u524d\uff09\n    BACKUP_FILE="${BACKUP_DIR}\/${DB_NAME}_${DATE}.sql"\n    # \u786e\u4fdd\u5907\u4efd\u76ee\u5f55\u5b58\u5728\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u5219\u521b\u5efa\u5b83\n    mkdir -p $BACKUP_DIR\n    # \u4f7f\u7528mysqldump\u8fdb\u884c\u6570\u636e\u5e93\u5907\u4efd\n    \/www\/server\/mysql\/bin\/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE\n\n    # \u5224\u65ad\u5907\u4efd\u662f\u5426\u6210\u529f\n    if [ $? -eq 0 ]; then\n        # \u5907\u4efd\u6210\u529f\u540e\u4f7f\u7528tar\u8fdb\u884c\u6253\u5305\u538b\u7f29\uff08\u8fd9\u91cc\u53ea\u662f\u7b80\u5355\u6253\u5305\u4e3a.tar\u6587\u4ef6\uff0c\u82e5\u8981\u8fdb\u4e00\u6b65\u538b\u7f29\u4e3a.tar.gz\u7b49\u683c\u5f0f\u53ef\u4fee\u6539\u53c2\u6570\uff09\n        tar --absolute-names -zcvf "${BACKUP_DIR}\/${DB_NAME}_${DATE}.tar.gz" "${BACKUP_FILE}"\n        echo "\u6570\u636e\u5e93 $DB_NAME \u5907\u4efd\u5e76\u538b\u7f29\u6210\u529f\uff0c\u5907\u4efd\u6587\u4ef6\u4e3a ${BACKUP_DIR}\/${DB_NAME}_${DATE}.tar"\n        # \u53ef\u9009\u62e9\u5220\u9664\u539f\u59cb\u672a\u538b\u7f29\u7684SQL\u6587\u4ef6\uff0c\u82e5\u4e0d\u9700\u8981\u4fdd\u7559\uff0c\u53d6\u6d88\u4e0b\u4e00\u884c\u6ce8\u91ca\u5373\u53ef\n        rm -f $BACKUP_FILE\n    else\n        echo "\u6570\u636e\u5e93 $DB_NAME \u5907\u4efd\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u76f8\u5173\u8bbe\u7f6e\u548c\u9519\u8bef\u4fe1\u606f\u3002"\n    fi\ndone<\/pre>

<\/p>

\u5b9a\u65f6\u4efb\u52a1\u914d\u7f6e<\/p>

#\u6bcf\u592910:01\u5907\u4efd\u4e00\u6b21\u6570\u636e\u5e93<\/p>

01 10 * * * \/www\/wwwroot\/shop\/db_backup.sh<\/p>

<\/p>"}