Assista a pasta e faça o upload para um servidor FTP

4

Estou procurando por algum software que assiste a uma pasta e, quando você altera um arquivo, ele faz o upload automaticamente. Eu não gosto de programas que montam um diretório remoto como uma pasta local, uma vez que eles são realmente lentos se você tiver uma conexão de rede lenta.

    
por zevstatiev 10.03.2012 / 00:05

2 respostas

2

Você quer algo que seja desativado para obter o aspecto em tempo real disso.

Escolhas comerciais óbvias são DropBox e box.net , opções gratuitas semelhantes incluem SparkleShare e alguns outros clones do DropBox.

Você também pode usar lsyncd para obter sincronização em tempo real com rsync ou inoticoming , ou inosync , ou inocron, ou iwatch para conduzir o processo.

Se você realmente precisa de FTP e não de algo mais sofisticado, é melhor analisar as sugestões posteriores, que são mais flexíveis sobre como a reação ao arquivo é alterada.

    
por 10.03.2012 / 01:13
2

Se você estiver executando o OSX, você pode fazer isso com o AppleScript configurando um 'script de pasta' na pasta específica. Ele fará o upload de todos os novos arquivos para o servidor FTP ou até mesmo atualizará quando um arquivo dentro da pasta for editado.

Aqui está um script de exemplo que pode ser atualizado para poder ser executado como um script de pasta:

(*
upload
Uploads the given file or folder to the given remote ftp folder using "curl".
If you need user/password to login to such server, append it to the URL. Eg:
ftp://user:[email protected]/dir/

Parameters:
filePath: file path, alias, posix path (a file or folder)
remoteDir: ftp directory (eg: "ftp://ftp.server.com/foo/" or "ftp://user:[email protected]/dir/")

Example:
upload(alias "path:to:dir:", "ftp://usernameHERE:[email protected]/html/docs/")
*)

to upload(filePath, remoteDir)
   global baseLocalFolder, baseRemoteFolder, ftpHome, ftpDir
   script nesteed
       to guessNewDir(f) -- "/path/to/footest" --> /footest
           set prevTids to AppleScript's text item delimiters
           set AppleScript's text item delimiters to POSIX path of parent's baseLocalFolder
           set f to item -1 of f's text items
           set AppleScript's text item delimiters to prevTids
           return f
       end guessNewDir
       to breakURL(d) --> "ftp://user:[email protected]/html/docs/" --> {"ftp://user:[email protected]", "/html/docs"}
           set prevTids to AppleScript's text item delimiters
           set AppleScript's text item delimiters to "/"
           set ftpHome to "" & items 1 thru 3 of d's text items
           try
               set ftpDir to "/" & items 4 thru -1 of d's text items
           on error
               set ftpDir to "/"
           end try
           set AppleScript's text item delimiters to prevTids
           return {ftpHome, ftpDir}
       end breakURL

       to processUnknownItem(f, remoteDir)
           set f to f as text
           if f ends with ":" then
               processFolder(f, remoteDir)
           else
               do shell script "curl -T " & quoted form of POSIX path of f & space & quoted form of remoteDir
           end if
       end processUnknownItem
       to processFolder(f, remoteDir)
           set newDir to guessNewDir(POSIX path of f) --> "/footest"
           try --> avoid existing dirs
               if newDir is not "" then do shell script "curl -Q " & quoted form of ("MKD " & parent's ftpDir & newDir) & space & parent's ftpHome
           end try
           set itemList to list folder alias f without invisibles
           repeat with i in itemList
               processUnknownItem(alias (f & i), parent's ftpHome & parent's ftpDir & newDir)
           end repeat
       end processFolder
   end script
   set wasError to false
   try
       set filePath to filePath as Unicode text
       if filePath does not contain ":" then set filePath to POSIX file filePath as Unicode text
       if remoteDir does not end with "/" then set remoteDir to remoteDir & "/"

       if filePath ends with ":" then --> mirror dir
           -- MAKE DIRECTORY "TEST" IN EXISTING "/HTML/DOCS"
           -- curl -Q "MKD /html/docs/test" ftp://user:[email protected]

           set baseLocalFolder to filePath
           set baseRemoteFolder to remoteDir
           set {ftpHome, ftpDir} to breakURL(remoteDir) of nesteed --> {"ftp://user:[email protected]", "/html/docs"}

           processFolder(filePath, remoteDir) of nesteed
       else
           do shell script "curl -T " & quoted form of POSIX path of filePath & space & quoted form of remoteDir
       end if
   on error msg number n
       set wasError to true
   end try
   set baseLocalFolder to missing value
   set baseRemoteFolder to missing value
   set ftpHome to missing value
   set ftpDir to missing value
   if wasError then error msg number n
   return
end upload

property |version| : 1.0
property author : "Pescados Software @ PescadosWeb.com"
property |date| : date "sábado, 17 julio 2004 22:20:27"
property license : "freeware, open-source"
    
por 10.03.2012 / 01:25

Tags