Samba 공유를 사용하여 Windows에서 Linux 서버로 파일을 전송하는 방법은 무엇입니까?

Samba 공유를 사용하여 Windows에서 Linux 서버로 파일을 전송하는 방법은 무엇입니까?

나는 직장에서 악몽을 꾼다. 아래에 설명할 내용을 담당한 동료가 해당 책임을 나에게 위임하고 현재 조직을 떠났습니다. 나는 이런 일을 해본 경험이 없습니다. 지식이 부족하고 질문이 길어서 양해해 주시기 바랍니다. 어떤 정보를 포함하거나 생략해야 할지 잘 모르겠습니다.

배경

우리는 제3자로부터 일부 데이터를 조달합니다. 이 데이터는 postgres 서버로 전송된 다음 일부 쉘 스크립트가 일부 변환을 수행하는 Linux 서버로 가져옵니다. 그런 다음 데이터 세트가 결합된 후 우리가 사용하는 데이터 분석 도구로 전송됩니다. 이 프로세스는 cron을 사용하여 자동화됩니다.

그러나 매년 Linux 서버에서 일부 메타데이터 csv 파일을 수동으로 업데이트해야 합니다(이 파일은 쉘 스크립트를 사용하여 타사 데이터와 결합됨).

폴더 구조:

다음은 [PuTTY를 사용하여 액세스]되는 Linux 서버 폴더 구조입니다.

  • another_project
  • another_project
  • 내 프로젝트
  • another_project

~/내_프로젝트>

  • 쉘_스크립트
  • 조달_파일
  • 메타파일
  • 결합_파일

~/메타_파일>

  • 2019.csv
  • 2020.csv
  • 2021.csv

내가 해야하는 것

내가해야 할 일은 다음과 같은 파일을 추가하는 것입니다.2022.csvMeta_files 폴더에. 내 로컬 시스템에 파일이 있습니다. 내 동료의 핸드오버 문서에서 그는 단순히 "삼바 공유를 사용하여 파일을 Linux에 복사"라고 말합니다. 삼바 공유 위치를 찾아 Windows 탐색기에서 설정했습니다. 다음과 같은 주소가 있습니다.\\smb.comp.com\prod. 여기에는 다양한 종류의 폴더가 있습니다.

나는 그것을 배치해야한다고 생각한다.2022.csv삼바 공유 어딘가에 파일을 저장한 다음 PuTTY를 사용하여 Linux 서버에서 명령을 실행하세요. 그러나 어디에 두어야 할지, 어떤 명령을 실행해야 할지 모르겠습니다.

너무 긴 질문과 지나친 설명에 대해 다시 한 번 사과드립니다. 2022.csv 파일을 Linux로 가져오는 방법에 대한 도움을 주시면 대단히 감사하겠습니다. 다른 정보가 필요한 경우 알려주시기 바랍니다. 많은 감사를 드립니다.

답변1

이미 SSH를 사용하여 Linux 서버에 액세스하고 있는 경우 반대 방법으로 수행하십시오. SFTP를 통해 Linux 서버에 직접 연결하십시오.업로드파일. 일반적으로 SSH를 허용하는 모든 서버는 SFTP 연결도 허용합니다.

  • PuTTY에는 pscppsftp명령(기존 SSH 키와 모든 항목을 사용할 수 있음)이 함께 제공됩니다.

    C:\> pscp 2022.csv user@yourserver:~/my_project/meta_files/2022.csv
    
  • scp최신 Windows 버전에는 및 명령 과 함께 OpenSSH가 내장되어 있습니다 sftp. 사용법은 pscp/psftp와 유사합니다.

  • WinSCP는 우수한 그래픽 SFTP 클라이언트일 뿐 아니라 자동화를 위한 배치 CLI 모드( winscp.com) 및 .NET 어셈블리도 포함하고 있습니다.

  • 수동 GUI 사용의 경우 Bitvise에도 SFTP가 있다고 생각합니다. FileZilla도 가능합니다.

하지만 리눅스 서버라면~ 해야 하다SMB 공유에서 파일을 끌어와서 원하는 위치에 놓은 다음 Linux SMB 클라이언트를 사용하여 액세스하세요. 예를 들어 다음과 같은 몇 가지가 있습니다.

  • smbclientSamba의 명령입니다 . 일회성 작업에는 좋지만 자동화하기에는 불편함:

    $ smbclient //smb.comp.com/prod -U someuser
    smbclient> get 2022.csv
    
  • 커널 수준 smb3cifs마운트. 자동화를 위한 좋은 선택이지만 처음 설정하려면 Linux 시스템에 대한 루트 권한이 필요합니다.

    $ sudo mount -t smb3 //smb.comp.com/prod /mnt/thesmbserver [options...]
    $ cp -av /mnt/thesmbserver/2022.csv ~/my_project/meta_files/
    $ sudo umount /mnt/thesmbserver
    

    (SMB 공유가 SMB3를 지원하지 않는 경우 이전 cifs유형을 사용하십시오.)

  • "python-smbprotocol" 모듈을 사용하는 사용자 정의 Python 스크립트. 자동화에 적합함:

    import os
    import shutil
    import smbclient
    import time
    
    thisyear = time.strftime("%Y")
    remote = r"\\smb.comp.com\prod\%s.csv" % thisyear
    local = os.path.expanduser("~/my_project/meta_files/%s.csv" % thisyear)
    
    with smbclient.open_file(remote, "rb") as remote_fh:
        with open(local, "wb") as local_fh:
            shutil.copyfileobj(remote_fh, local_fh)
    

(python-smbprotocol을 사용하여 파일을 복사하는 여러 Linux cronjob이 있습니다.에게Windows 서버를 사용한 다음 python-pypsrp를 사용하여 해당 Windows 시스템에서 원격으로 명령을 실행합니다.)

관련 정보