4

Я ищу какое-то программное обеспечение, которое просматривает папку, и когда вы изменяете файл, оно автоматически загружает его. Мне не нравятся программы, которые монтируют удаленный каталог как локальную папку, поскольку они очень медленные, если у вас медленное сетевое соединение.

2 ответа2

2

Вы хотите что-то, что зависает, инить, чтобы получить аспект этого в реальном времени.

Очевидными коммерческими вариантами являются DropBox и box.net, аналогичные бесплатные варианты включают SparkleShare и некоторые другие клоны DropBox.

Вы также можете использовать lsyncd для получения синхронизации, управляемой rsync в реальном времени, или inoticoming, или inosync, или inocron, или iwatch для управления процессом.

Если вам действительно нужен FTP, а не что-то более изворотливое, вы должны взглянуть на последующие предложения, которые более гибки в отношении реакции на изменения файла.

2

Если вы используете OSX, вы можете сделать это с помощью AppleScript, настроив «скрипт папки» в определенной папке. Он будет загружать каждый новый файл на FTP-сервер или даже обновлять, когда файл в папке редактируется.

Вот пример сценария, который можно обновить, чтобы можно было запускать как сценарий папки:

(*
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:password@ftp.server.com/dir/

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

Example:
upload(alias "path:to:dir:", "ftp://usernameHERE:passwordHERE@ftp.serverHERE.com/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:pass@ftp.server.com/html/docs/" --> {"ftp://user:pass@ftp.server.com", "/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:pass@ftp.server.com

           set baseLocalFolder to filePath
           set baseRemoteFolder to remoteDir
           set {ftpHome, ftpDir} to breakURL(remoteDir) of nesteed --> {"ftp://user:pass@ftp.server.com", "/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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .