FTP一键上传脚本

特点:
支持文件批量上传至 FTP 指定目录;

1、下载该脚本并赋予执行权限
下载脚本到本地待上传文件的目录下,比如:/data/www/default

cd /data/www/default
wget --no-check-certificate https://github.com/teddysun/across/raw/master/ftp_upload.sh
chmod +x ftp_upload.sh

2、修改并配置脚本
请使用 vim 或 nano 等工具来修改。

关于变量名的一些说明:

LOCALDIR (脚本当前所在目录)
LOGFILE (脚本运行产生的日志文件路径)
FTP_HOST (连接的 FTP 域名或 IP 地址)
FTP_USER (连接的 FTP 的用户名)
FTP_PASS (连接的 FTP 的用户的密码)
FTP_DIR (连接的 FTP 的远程目录,比如: public_html)

一些注意事项的说明:

1)脚本需要用到 ftp 命令,请事先安装好;
2)脚本运行产生的日志文件路径不要乱改;
3)脚本需运行在待上传文件的目录下;
4)脚本后面跟含有通配符的参数时,一定要加双引号。

3、脚本运行示例
脚本会显示待上传文件列表,并在最后统计出所需时间。

1)上传当前目录下的文件 filename.tgz

./ftp_upload.sh filename.tgz

2)上传当前目录下的多个文件 filename1.tgz,filename2.tgz,filename3.tgz

./ftp_upload.sh filename1.tgz filename2.tgz filename3.tgz

3)上传当前目录下的通配符文件 *.tgz(注意此时后面跟的参数要加双引号)

./ftp_upload.sh "*.tgz"

4)上传当前目录下的多个通配符文件 *.tgz,*.gz(注意此时后面跟的参数要加双引号)

./ftp_upload.sh "*.tgz" "*.gz"

原文: https://teddysun.com/484.html

使用curl / wget命令上传下载FTP

curl可以在shell下轻松上传下载ftp上的文件,相比ftp命令更具有优势,因为它能在单命令条件下,下载或者上传一个ftp文件,甚至可以删除文件。

下面看实例:

1、列出ftp服务器上的目录列表:

curl ftp://www.xiaokyun.com/ --user name:passwd
curl ftp://www.xiaokyun.com/ –u name:passwd #简洁写法
curl ftp://name:passwd@www.xiaokyun.com #简洁写法2

2、只列出目录,不显示进度条

curl ftp://www.xiaokyun.com –u name:passwd -s

3、下载一个文件:

curl ftp://www.xiaokyun.com/size.zip –u name:passwd -o size.zip

4、上载一个文件:

curl –u name:passwd -T size.mp3 ftp://www.xiaokyun.com/mp3/

5、从服务器上删除文件(使用curl传递ftp协议的DELE命令):

curl –u name:passwd ftp://www.xiaokyun.com/ -X 'DELE mp3/size.mp3'

6、另外curl不支持递归下载,不过可以用数组方式下载文件,比如我们要下载1-10.gif连续命名的文件:

curl –u name:passwd ftp://www.xiaokyun.com/img/[1-10].gif –O #O字母大写

7、要连续下载多个文件:

curl –u name:passwd ftp://www.xiaokyun.com/img/[one,two,three].jpg –O #O字母大写

8、wget下载文件:

用户账户:xiaokyun
用户密码:123456
ftp下载

wget ftp://xiaokyun:123456@www.xiaokyun.com/xxx.zip

http下载

wget --http-user=xiaokyun --http-passwd=123456 http://www.xiaokyun.com/xxx.zip

9、wget参数:

wget的参数较多,但大部分应用只需要如下几个常用的参数:
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-N 时间戳:该参数指定wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。
-m 镜像:相当于同时使用-r和-N参数。
-l 设置递归级数;默认为5。-l1相当于不递归;-l0为无穷递归;注意,当递归深度增加时,文件数量将呈指数级增长。
-t 设置重试次数。当连接中断(或超时)时,wget将试图重新连接。如果指定-t0,则重试次数设为无穷多。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。

使用举例:

wget -m -l4 -t0 http://www.xiaokyun.com/

将在本地硬盘建立http://www.xiaokyun.com/的镜像,镜像文件存入当前目录下一个名为www.xiaokyun.com的子目录中(你也可以使用-nH参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为4,重试次数为无穷(若连接出现问题,wget将坚韧不拔地永远重试下去,知道任务完成!)

另外一些使用频率稍低的参数如下:
-A acclist / -R rejlist:
这两个参数用于指定wget接受或排除的文件扩展名,多个名称之间用逗号隔开。例如,假设我们不想下载MPEG视频影像文件和.AU声音文件,可使用如下参数:
-R mpg,mpeg,au

其它参数还有:
-L 只扩展相对连接,该参数对于抓取指定站点很有用,可以避免向宿主主机的其他目录扩散。例如,某个人网站地址为:http://www.xiaokyun.com/~ppfl/,使用如下命令行:

wget -L http://www.xiaokyun.com/~ppfl/

则只提取该个人网站,而不涉及主机www.xiaokyun.com上的其他目录。

-k 转换连接:HTML文件存盘时,将其中的非相对连接转换成为相对连接。
-X 在下载FTP主机上的文件时,排除若干指定的目录

另外,下面参数用于设置wget的工作界面:
-v 设置wget输出详细的工作信息。
-q 设置wget不输出任何信息。

原文:http://hi.baidu.com/leejun_2005/blog/item/873f9aedfe83943b63d09feb.html

参考: http://bolg.malu.me/html/2011/1239.html
http://fanqiang.chinaunix.net/a6/b9/20020514/060201225.html

更新WordPress时需要输入FTP信息的解决办法

1、vps上的解决办法:

chmod -R 755 /home/wwwroot
chown -R www /home/wwwroot

假设你的wordpress安装目录为/home/wwwroot/wordpress
执行:

chown -R www /home/wwwroot/wordpress

执行上面的命令就可以将/home/wwwroot/wordpress下所有文件的属主改为www,这样就可以解决自动更新必须填FTP的问题。

2、虚拟主机:

解决之道1:
在wp-config.php里加入下面代码:

define("FTP_HOST", "你主机的IP地址");
define("FTP_USER", "FTP用户名");
define("FTP_PASS", "FTP密码");

解决之道2:
可以在wp-config.php里加入下面代码:

define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

原文: http://vincent.coowii.com/index.php/upgrade-wordpress-without-input-ftp-info/

Linux VPS/服务器 网站及数据库自动本地备份并FTP上传备份脚本

准备工作:

需要提前在VPS安装好lftp,lftp功能上比较强大,CentOS直接执行:yum install lftp,Debian执行:apt-get install lftp

需要在VPS上创建/home/backup/ 目录,在FTP上创建backup目录。

如果VPS上数据库不多的话使用Godaddy的免费空间就可以(10GB空间,300GB流量),只要注册个域名就免费送。

下面将备份脚本进行部分注释:
#!/bin/bash
#Funciont: Backup website and mysql database
#Author: licess
#Website: http://lnmp.org
#IMPORTANT!!!Please Setting the following Values!

######~Set Directory you want to backup~######将下面的目录修改成自己要备份的目录,一般按我的都是在/home/wwwroot/下面所有直接写了需要备份的目录。可以继续再加:Backup_Dir5=你的目录 ,Backup_Dir后面的数字依次递增。如果不足4个,直接删除不需要的就可以,同时修改下面tar zcf 部分。

Backup_Dir1=vpser.net
Backup_Dir2=lnmp.org
Backup_Dir3=licess.org
Backup_Dir4=jungehost.com

######~Set MySQL UserName and password~######设置MySQL的用户名和密码,最好是root,其他用户可能因为权限问题无法导出部分数据库。
MYSQL_UserName=root
MYSQL_PassWord=yourmysqlrootpassword

######~Set MySQL Database you want to backup~######设置要部分的数据库,可以继续再加:Backup_Database_Name5=数据库名,Backup_Database_Name后面的数字依次递增。
Backup_Database_Name1=vpser
Backup_Database_Name2=licess
Backup_Database_Name3=junge
Backup_Database_Name4=vpserorg

######~Set FTP Information~######设置用来存放备份数据的FTP信息
FTP_HostName=184.168.192.43 //FTP服务器的IP或者域名
FTP_UserName=vpsernet //FTP服务器用户名
FTP_PassWord=yourftppassword //FTP服务器用户对应的密码
FTP_BackupDir=backup //备份到FTP上的目录,需要提前创建好。

#Values Setting END!

TodayWWWBackup=www-*-$(date +”%Y%m%d”).tar.gz
TodayDBBackup=db-*-$(date +”%Y%m%d”).sql
OldWWWBackup=www-*-$(date -d -3day +”%Y%m%d”).tar.gz
OldDBBackup=db-*-$(date -d -3day +”%Y%m%d”).sql

tar zcf /home/backup/www-$Backup_Dir1-$(date +”%Y%m%d”).tar.gz -C /home/wwwroot/ $Backup_Dir1 –exclude=soft
tar zcf /home/backup/www-$Backup_Dir2-$(date +”%Y%m%d”).tar.gz -C /home/wwwroot/ $Backup_Dir2
tar zcf /home/backup/www-$Backup_Dir3-$(date +”%Y%m%d”).tar.gz -C /home/wwwroot/ $Backup_Dir3 –exclude=test
tar zcf /home/backup/www-$Backup_Dir4-$(date +”%Y%m%d”).tar.gz -C /home/wwwroot/ $Backup_Dir4

###上面为备份网站文件数据,因为我的网站比较零散,而且网站目录下面有些目录属于临时目录并不需要备份,所以可以在上面加上–exclude=不备份的目录。如果在前面加了Backup_Dir5=yourdir,则再加tar zcf /home/backup/www-$Backup_Dir5-$(date +”%Y%m%d”).tar.gz -C
/home/wwwroot/ $Backup_Dir5 。如果多余则删除多余行。

/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +”%Y%m%d”).sql
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date +”%Y%m%d”).sql
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name3 > /home/backup/db-$Backup_Database_Name3-$(date +”%Y%m%d”).sql
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name4 > /home/backup/db-$Backup_Database_Name4-$(date +”%Y%m%d”).sql

###上面为备份MySQL数据库,如果在前面加了Backup_Database_Name5=yourdatabasename,则再加/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name5 > /home/backup/db-$Backup_Database_Name5-$(date +”%Y%m%d”).sql 。如果多余则删除多余行。

rm $OldWWWBackup
rm $OldDBBackup
###删除3天前的备份###

cd /home/backup/

###下面为自动上传部分,不得不说lftp很强大,抛弃ftp吧####
lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF
cd $FTP_BackupDir
mrm $OldWWWBackup
mrm $OldDBBackup
mput $TodayWWWBackup
mput $TodayDBBackup
bye
EOF

脚本下载地址:http://soft.vpser.net/lnmp/backup.sh

将脚本放到/root/ 下面,按上面的注释修改脚本中的参数,并保存,如果不熟悉vi或者nano编辑器,可以用winscp,执行:chmod +x /root/backup.sh 为脚本添加执行权限,执行:crontab -e 添加定时执行

在crontab中加入:0 3 * * * /root/backup.sh

凌晨3点自动执行/root/bakcup.sh 脚本,备份vps上的数据并上传到FTP上。

原文:Linux VPS/服务器 网站及数据库自动本地备份并FTP上传备份脚本

SSH给网站作异地FTP备份

主站打包
tar czf  xiaokyun.com.tar.gz *

[xiaokyun@server backups]$ ftp /*启用FTP客户端
ftp> open backup.xiaokyun.com /*打开远程服务器域名或IP
Connected to backup.xiaokyun.com.
220 ProFTPD 1.3.1 Server ready.
500 AUTH not understood
500 AUTH not understood
KERBEROS_V4 rejected as an authentication type
Name (backup.xiaokyun.com:xiaokyun): ftp /*输入用户名
331 Password required for ftp
Password:pwd /*输入密码
230 User ftp logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put xiaokyun.com.tar.gz     xiaokyun.com.tar.gz /*上传文件
local: xiaokyun.com.tar.gz remote: xiaokyun.com.tar.gz
227 Entering Passive Mode (74,82,161,100,139,96).
150 Opening BINARY mode data connection for b.tar.gz
226 Transfer complete
21211756 bytes sent in 90 seconds (2.3e+02 Kbytes/s)
ftp>

镜像站解压
tar zxvf xiaokyun.com.tar.gz