Я хочу перенести LMDB с моего локального компьютера на другой удаленный компьютер, но с размером файла есть некоторые странности. Согласно файловой системе, LMDB - это каталог, содержащий два файла: data.mdb и lock.mdb.
Вывод ls -altoh lmdb
указывает, что размер файла data.mdb равен 4T, что соответствует параметру map_size, который я использовал для создания LMDB. Все это означает, что при открытии БД ОС будет отображать файл в памяти, предоставляя ему 4T виртуального пространства. Вывод du -hs lmdb
указывает, что lmdb занимает ~ 900 МБ диска, что согласуется с map_size, сообщаемым python -mlmdb -e lmdb stat
.
Когда я делаю локальную копию cp -r lmdb lmdb_copy
, она работает как положено: копируется 900 МБ данных. То же самое, когда я делаю scp -r lmdb lmdb_copy2
(используя scp для локального копирования).
Однако, когда я делаю удаленное копирование scp -r lmdb user@remotehost:~/lmdb_copy
, scp пытается скопировать 4T данных, как указано индикатором выполнения. Я остановил scp после того, как 2 ГБ данных были переданы.
На удаленной машине, 'ls
du
как 2 Гб , как размер LMDB. python -mlmdb -e lmdb_copy stat
сообщает правильный размер 900 МБ и наличие всех записей. Я подтвердил, что могу распечатать все ключи, и они верны.
С этим фоном у меня возникает вопрос: почему scp пытается скопировать все 4T размера карты памяти? В идеале, я хотел бы позволить scp делать свою работу в фоновом режиме, не убивая ее вручную.