fcp (ftp copy) - copia um ou mais arquivos via FTP
Publicado por Pedro Robson Leão 23/09/2004
[ Hits: 13.667 ]
O script efetua copia de arquivos entre maquinas da rede similar ao comando rcp e/ou scp, o diferencial eh que o script utiliza o protocolo ftp para realizar esta copia.
O parametros de uso são similares ao do scp.
#!/usr/bin/bash
user=;
pass=;
server=;
dst=;
dst_name=;
debug=;
function _ftp() {
host=${1};
user=${2};
pass=${3};
method=${4};
src_dir=${5};
src_fil=${6};
dst_dir=${7};
dst_fil=${8};
if [ ${method} == "put" ] ; then
LCD=${src_dir};
SRC=${dst_fil}
CD=${dst_dir};
else
LCD=${dst_dir};
SRC=${src_fil}
CD=${src_dir};
fi
printf "%s %s - Remote directory now %s " $host $src_fil ${CD};
dbg=;
[ ! -z ${debug} ] && dbg="d";
ftp -${dbg}ni ${host} <<EOF
user ${user} ${pass}
lcd ${LCD}
cd ${CD}
${method} ${SRC}
by
EOF
}
function isUrl() {
echo ${1} | grep : >/dev/null
return ${?};
}
function parseUser() {
if echo ${1} | grep \@ >/dev/null ; then
echo ${1/\@*/};
fi
}
function parseServer() {
var=${1/*\@/};
echo ${var/:*/};
}
function parseDir() {
echo ${1/*:/};
}
function usage() {
printf "Usage: %s [-d] files [[user]@server]:[dir] \n" $0
exit 2;
}
[ $# == 0 ] && usage $0;
while getopts hd name ; do
case $name in
d) debug=1;;
*) usage $0;;
esac
done
shift $(($OPTIND -1));
i=1;
declare -a src;
for file in ${*} ; do
if [ ${i} -eq ${#} ] ; then
dst=${file};
else
src[${i}]=${file};
i=$((i+1));
fi
done
if isUrl ${dst} ; then
user=$( parseUser ${dst} );
server=$( parseServer ${dst} );
dst=$( parseDir ${dst} );
if [ ! -d ${dst} ] ; then
dst=$( dirname ${dst} );
dst_name=$( basename ${dst} );
fi
[ -z "${user}" ] && user=${LOGNAME};
if [ -z "${pass}" ] ; then
printf "%s@%s's password: " $user $server;
read pass;
fi
fi
method="put";
for ((i=1; i<${#}; i++)) ; do
if isUrl ${src[$((i))]} ; then
user=$( parseUser ${src[$((i))]} );
server=$( parseServer ${src[$((i))]} );
src[$((i))]=$( parseDir ${src[$((i))]} );
method="get";
[ -z "${user}" ] && user=${LOGNAME};
if [ -z "${pass}" ] ; then
printf "%s@%s's password: " $user $server;
read pass;
fi
fi
for file in ${src[$((i))]} ; do
#set -x
_ftp ${server} ${user} ${pass} ${method} $( dirname ${file} ) $( basename ${file} ) ${dst} ${dst_name};
#set +x
done
done
Configuração de failover de links de internet
Backup diário das bases do MySQL
Limitador de conexões para usuários
Nenhum comentário foi encontrado.
SynapSeq - programa para estimular as ondas cerebrais
Por que seu __DIR__ falhou ou o "inferno" dos caminhos no PHP
Preparando-se para certificações da LPI através do LPI Lab
Migração de Arch Linux para repositórios CachyOS (Uso de Instruções v3 e v4)
Jogando "Magic" gratuitamente no Linux
Zoxide e fzf no bash para incrementar o uso do Terminal
As diferencas entre o clipboard comum e a selecao ativa
Arch Linux com repos do CachyOS para otimização ou usar Gentoo?
O que você está ouvindo agora? [2] (243)
Abrir um arquivo URL pelo Clipper (7)
Eu aprendi o segredo das artes! hahaha (0)









