Я пытаюсь получить список файлов (а затем извлечь указанные c файлы) из большого (300-600 МБ) удаленного файла tar.gz - без загрузки всего файл. Тем не менее, я не совсем понимаю, должен ли мой файл рассматриваться как двоичный или нет, или как избавиться от встроенных nuls без манипуляций с файлом. Я видел вопросы, которые касаются удаленных сжатых двоичных файлов или локальных распакованных локальных файлов , но не распаковываемых удаленно размещенных сжатых tar-файлов.
Я пытался использовать gzfile
:
example.url <- "https://neon-microbial-raw-seq-files.s3.data.neonscience.org/2017/BMI_B69RN_ITS_R1_fastq.tar.gz"
con <- gzfile(example.url)
test.list <- utils::untar(
tarfile = con,
list = T)
, который возвращает:
Error in readBin(con, "raw", n = 512L) :
can only read from a binary connection
Если я запускаю open(con, "rb")
, я получаю сообщение о том, что файл не существует. Открытие соединения в двоичном формате без gzfile()
вместо этого дает ошибку о встроенных нулях:
bcon <- url("https://neon-microbial-raw-seq-files.s3.data.neonscience.org/2017/BMI_B69RN_ITS_R1_fastq.tar.gz")
open(bcon, "rb")
test.list <- utils::untar(
tarfile = bcon,
list = T)
, которая возвращает:
Error in rawToChar(block[seq_len(ns)]) :
embedded nul in string: '\037\x8b\b\0\x9e\x9c\xbbZ\0\003\xec[is䶙\x9e\xcf\xfe\025\xfe\xc8\003\xea\xe6\t\x9eM\022\004\001T\xaa\034'\xb1\xb9\x95\xfd65\xb5\xf1Ʈ\xb5=\x8e=\xaeڟ\xbf\xef\001\xb2[Rk\xd4s9\x9br \x89\r\002 \xc0\026\037>\xef\x89\xc3\xf1p\x9c\xbex\xfd\xe3\u07ff\xf8\xee\xc7\xffy\xf1iJ\xc2\xe5\xa9\xcf$K'
Наконец, использование gzcon
возвращает другую ошибку, связанную с внедренным null:
test.list <- utils::untar(
tarfile = gzcon(url(example.url)),
list = T)
, который возвращает:
Error in rawToChar(block[seq_len(ns)]) :
embedded nul in string: '././@LongLink\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00000000\00000000\00000000\000000000201\000000000000\0011556\0 L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root'
Любая помощь приветствуется!