
저는 유닉스를 처음 사용합니다. 내 고객은 정기적으로 SFTP 서버에 일부 데이터 파일을 보내야 한다는 요구 사항이 있습니다.
SFTP 서버에는 동일한 이름의 파일이 이미 존재합니다. 그들이 원하는 것은 sftp 파일을 서버에 전송할 때 기존 파일에 파일 데이터를 추가하는 것입니다.
레거시 서버에 10개의 행이 있는 파일이 있다고 가정해 보겠습니다 A.dat
. 이제 A.dat
5행의 sftp 파일을 만들고 있습니다 . 따라서 sftp 이후 SFTP 서버 파일에는 A.dat
15개의 행이 있어야 합니다.
다른 파일과 동일합니다. 또한 파일이 SFTP 시스템에 없으면 스크립트가 파일을 배치해야 합니다.
빠른 답변을 주시면 감사하겠습니다. 현재 sftp
스크립트는 아래와 같습니다. 이는 단순히 기존 파일을 넣고 덮어쓰는 것입니다.
#!/usr/bin/expect -d
set timeout -1
spawn sftp user@server
expect "sftp>"
send "cd /destinationpath\n"
expect "sftp>"
send "lcd /sourcepath\n"
expect "sftp>"
send "put A.dat\n"
expect "sftp>"
send "exit\n"
interact
요구 사항에 따라 이 스크립트를 업데이트하는 데 도움을 주실 수 있나요?
SFTP가 추가를 지원하지 않는다는 것을 알게 되었는데, SSH를 사용하여 이를 어떻게 달성할 수 있습니까?
답변1
OpenSSH sftp
클라이언트는 추가를 지원하지 않습니다.
다른 SFTP 클라이언트를 사용해야 합니다.
또는 다음과 같은 셸 액세스를 사용합니다.
cat /sourcepath/A.dat | ssh user@server "cat >> /destinationpath/A.dat"
또는 원본 내용이 있더라도 완전한 로컬 파일을 유지할 수 있다면 다음을 사용할 수 있습니다.
reput
명령파일 전송을 "재개"합니다.