Script Usage¶
All options that are available for command line, can also be passed to
the synchronizers. For example --delete-unmatched
becomes
"delete_unmatched": true
.
Upload modified files from local folder to FTP server:
from ftpsync.targets import FsTarget
from ftpsync.ftp_target import FTPTarget
from ftpsync.synchronizers import UploadSynchronizer
local = FsTarget("~/temp")
user ="joe"
passwd = "secret"
remote = FTPTarget("/temp", "example.com", username=user, password=passwd)
opts = {"force": False, "delete_unmatched": True, "verbose": 3}
s = UploadSynchronizer(local, remote, opts)
s.run()
Synchronize a local folder with an FTP server using TLS:
from ftpsync.targets import FsTarget
from ftpsync.ftp_target import FTPTarget
from ftpsync.synchronizers import BiDirSynchronizer
local = FsTarget("~/temp")
user ="joe"
passwd = "secret"
remote = FTPTarget("/temp", "example.com", username=user, password=passwd, tls=True)
opts = {"resolve": "skip", "verbose": 1}
s = BiDirSynchronizer(local, remote, opts)
s.run()
Note
The class FTPTarget
was renamed with release 4.0 (named FtpTarget
before).
Logging¶
By default, the library initializes and uses a python logger named ‘pyftpsync’. This logger can be customized like so:
import logging
logger = logging.getLogger("pyftpsync")
logger.setLevel(logging.DEBUG)
and replaced like so:
import logging
import logging.handlers
from ftpsync.util import set_pyftpsync_logger
custom_logger = logging.getLogger("my.logger")
log_path = "/my/path/pyftpsync.log"
handler = logging.handlers.WatchedFileHandler(log_path)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
custom_logger.addHandler(handler)
set_pyftpsync_logger(custom_logger)
Note
The CLI calls set_pyftpsync_logger(None)
on startup, so it logs to stdout
(and stderr).