Airflow:如何通过smbclient将文件从Linux下载到Windows

时间:2019-03-27 20:20:57

标签: python airflow samba smb

我有一个DAG,可以将数据从源导入服务器。从那里,我希望将该文件从服务器下载到Windows网络。我想将此部分保留在Airflow中以实现自动化。有人知道如何在Airflow中做到这一点吗?我不确定是否要使用os包,shutil包,或者是否有其他方法。

1 个答案:

答案 0 :(得分:0)

我想您是说您正在寻找一种将文件从云服务器获取到Windows共享驱动器或Windows网络中计算机上的方法,这些是我见过的一些选择:

  1. 使用Google驱动器,Dropbox,Box或s3之类的服务在云计算机和Windows网络中的计算机上模拟已同步的文件夹。
  2. 调用bash命令以SCP将文件发送到Windows服务器或网络中的工作程序。这也可能在相反的方向上起作用。
  3. 将文件添加到git存储库,并使Windows网络中的工作程序将存储库同步到共享位置。仅在非常特定的情况下,此选项才有用。这样做的好处是您可以跟踪更改并恢复旧状态(如果数据是CSV或其他文本格式),但是对于大文件或二进制文件来说不是很好。
  4. 使用rsync将文件传输到安装了共享位置的Windows网络中的工作程序,然后使用python或bash将文件移动到同步的目录。
  5. 将网络驱动器安装到服务器,然后使用python或bash将文件移动到服务器上。

使用Airflow({shutil)或bash脚本将文件传输到正确的目录以供其他进程拾取,或者通过调用bash子进程来使用Airflow,所有这些都应该可行通过SCP执行直接传输或通过git提交数据。您将必须找出防火墙和网络设置的可能。其中一些将需要在Windows端协调任务(例如git选项将需要某种cron作业或任务计划程序以拉出存储库以使文件保持最新状态)。