为了方便可以使用密钥登录:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@x.x.x.x
想要达到的同步效果: 1. 某些文件不要同步过去 2. 某些目录不要同步过去 3. 远端删除本地删掉的文件 4. 包括子目录在内的所有文件都同步过去
同步命令如下:
ROOT_DIR=$(cd `dirname $0`; pwd)
DIR_NAME=$(basename ${ROOT_DIR})
HOST_IP="x.x.x.x"
HOST_USER="root"
rsync -avz --delete \
--exclude='lib/' \
--exclude='gateway/gateway' \
--exclude='WinPcap_4_1_3.exe' \
--exclude='*.log' \
${ROOT_DIR}/ ${HOST_USER}@${HOST_IP}:/tmp/${DIR_NAME}
参数说明: 1. -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD 2. -v, --verbose 详细模式输出 3. -z, --compress 传输的时候压缩文件 4. --delete 删除远端上本地不存在的文件 5. --exclude 不包含哪些文件,要特别注意这里是模式匹配的,如果目录名和文件名一致,需要将路径也指定进去,不然同步会不完整,配置的时候需要观察一下,嗯,也不可以使用绝对路径,指定目录用’lib/’、也可用通配符’*/log’、也可以直接是文件名’WinPcap_4_1_3.exe’、或包含路径的文件名’gateway/gateway’
当然了,因为自己想要的不只是目录同步,所以呢,也可以配合ssh来做一些其它的事情 ssh执行命令如下:
ssh ${HOST_USER}@${HOST_IP} "bash /tmp/${DIR_NAME}/build.sh"
|