Cómo mantener archivos en la memoria: transferencia de archivos entre servidores sin almacenarlos localmente
Estoy en el proceso de escribir una herramienta de implementación simple que necesita tomar archivos tar de s3, extraerlos y luego subirlos a nuestro servidor provisional. Me gustaría hacer esto sin almacenar los archivos localmente, manteniéndolos en la memoria.
Aquí está mi código para descargar archivos de s3
func s3downloadFile(downloader *s3manager.Downloader, item string) {
localitem := strings.Replace(item, s3base, "", -1)
os.MkdirAll(path.Dir(localitem), os.ModePerm)
file, err := os.Create(localitem)
if err != nil {
exitErrorf("Unable to open file %q, %v", err)
}
defer file.Close()
numBytes, err := downloader.Download(file,
&s3.GetObjectInput{
Bucket: aws.String(s3bucket),
Key: aws.String(item),
})
if err != nil {
exitErrorf("Unable to download item %q, %v", item, err)
}
fmt.Println("Downloaded", file.Name(), numBytes, "bytes")
}
Me gustaría evitar tener que crear los directorios y archivos en este ejemplo y simplemente mantener todo en la memoria. Omití el paso que extrae los archivos de mi código. El siguiente paso sería subir los archivos con go-scp al igual que
// Finaly, copy the file over
// Usage: CopyFile(fileReader, remotePath, permission)
client.CopyFile(f, "/path/to/remote/file", "0655")
i pregunta se centraría en lafile, err := os.Create(localitem)
parte de este código, ¿cómo puedo mantener un lector de archivos en la memoria en lugar de almacenar el archivo localmente?