
Я хочу загрузить файл с сервера мэйнфрейма на машину Linux с помощью команды SFTP и хочу сохранить EOL. Кажется, что фактический файл не имеет символов EOL, тогда как процесс SFTP добавляет символы EOL при загрузке его на сервер Linux.
Есть ли возможность загрузить файл в двоичном режиме с помощью команды SFTP?
Я попытался загрузить данные с сервера мэйнфрейма с помощью FTP и SFTP. FTP с двоичным режимом сохраняет фактическое содержимое исходного файла без каких-либо изменений, тогда как FTP с режимом ASCII и команды SFTP изменяют содержимое файла, добавляя EOL и другие специальные символы.
Для загрузки файла с сервера мэйнфрейма я использовал следующую команду SFTP:
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ sftp [email protected]
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* NOTE: YOU ARE CONNECTING VIA IBM'S SSH PORTED *
* TOOLS. *
* DEV2. *
* THIS IS IN TEST MODE AND MAY NOT FUNCTION *
* AS EXPECTED. *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
[email protected]'s password:
Connected to XXX.XXX.XXX.com.
sftp> binary
Invalid command.
sftp> get //SYS2542.RTSB.RCD130.OUT.FEAB091
Fetching //SYS2542.RTSB.RCD130.OUT.FEAB091 to SYS2542.RTSB.RCD130.OUT.FEAB091
//SYS2542.RTSB.RCD130.OUT.FEAB091 99% 2620KB 2.0MB/s 00:00 ETA
sftp> bye
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ ls -ltr
total 22360
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 03:49 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.ASCII
-rw-r--r-- 1 ABC rcd 2680128 Jul 26 03:50 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.BINARY
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 15:21 SYS2542.RTSB.RCD130.OUT.FEAB091
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ mv SYS2542.RTSB.RCD130.OUT.FEAB091 SFTP.SYS2542.RTSB.RCD130.OUT.FEAB091
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ ls -ltr
total 22360
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 03:49 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.ASCII
-rw-r--r-- 1 ABC rcd 2680128 Jul 26 03:50 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.BINARY
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 15:21 SFTP.SYS2542.RTSB.RCD130.OUT.FEAB091
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$
решение1
Порт OpenSSH для z/OS входит в комплектz/ОС 2.2,z/ОС 2.3, иz/ОС 2.4(GA 30-сен-2019) обеспечивает ascii
и binary
команды. Есть примечание...
Подкоманда ascii действительна только для передачи файлов между платформами UNIX. Она недействительна для передачи файлов между платформами Windows и UNIX.
...относительно ограничения на использование команды ascii
. Отдельно binary
отмечено, что по умолчанию.
Возможно, вы используете старый порт OpenSSH, который не поддерживает команду binary
, поскольку я вижу в вашем журнале сеанса, что вы получаете ошибку при его использовании. Я не знаю, когда binary
была введена эта команда, возможно, она была там в порту z/OS все это время.
Также возможно, что вы используетеDovetailed Technologies Co:Z sftp-сервер, который используетдругой набор команд. Один из способов проверить это — выполнить команду ls /+
во время сеанса sftp.
Параметр, который вы ищете, это , mode
а по умолчанию это двоичный. Но администратор может изменить значение по умолчанию. Если по умолчанию это текст, а вы хотите, чтобы он был двоичным, вы можете изменить его, выполнив команду ls /+mode=binary
во время сеанса sftp.