Я ищу какое-то программное обеспечение, которое просматривает папку, и когда вы изменяете файл, оно автоматически загружает его. Мне не нравятся программы, которые монтируют удаленный каталог как локальную папку, поскольку они очень медленные, если у вас медленное сетевое соединение.
2 ответа
Вы хотите что-то, что зависает, инить, чтобы получить аспект этого в реальном времени.
Очевидными коммерческими вариантами являются DropBox и box.net, аналогичные бесплатные варианты включают SparkleShare и некоторые другие клоны DropBox.
Вы также можете использовать lsyncd для получения синхронизации, управляемой rsync в реальном времени, или inoticoming, или inosync, или inocron, или iwatch для управления процессом.
Если вам действительно нужен FTP, а не что-то более изворотливое, вы должны взглянуть на последующие предложения, которые более гибки в отношении реакции на изменения файла.
Если вы используете 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"