UPDATE: с командой compact
и WiredTiger похоже, что дополнительное пространство на диске будет фактически выпущено в OS .
UPDATE: с v1.9 + есть команда compact
.
Эта команда выполняет уплотнение «в строке». Это все равно потребуется дополнительное пространство, но не так много.
MongoDB сжимает файлы:
Вы можете сделать это «сжатие» на mongod --repair
или путем прямого подключения и запуска db.repairDatabase()
.
В любом случае вам нужно место для копирования файлов. Теперь я не знаю, почему у вас недостаточно места для выполнения компрессии, однако у вас есть некоторые опции, если у вас есть другой компьютер с большим объемом.
mongoexport
), а затем вы можете импортировать ту же базу данных (используя mongoimport
). Это приведет к сжатию новой базы данных. Теперь вы можете остановить замену оригинала mongod
новыми файлами базы данных, и вам хорошо идти. В настоящее время нет хорошего способа «сжать на месте» с помощью Mongo. И Mongo может определенно сосать много места.
Лучшей стратегией сейчас для уплотнения является запуск настройки Master-Slave. Затем вы можете сжать Slave, позволить ему догнать и переключить их. Я знаю еще немного волосатого. Может быть, команда Монго придумает лучшее уплотнение на месте, но я не думаю, что это высоко в их списке. В настоящее время пространство на диске считается дешевым (и обычно оно).
Работы Cygwin, но эти утилиты также доступны. Просто шлепнитесь их на своем диске, поместите каталог в Ваш путь, и у Вас есть многие Ваши дружественные утилиты Unix. Lighterweight, по моему скромному мнению, что Cygwin (хотя это работает точно также).
edlin или редактирование
плюс существуют Windows Services для Unix, который идет со многими инструментами Unix для окон. http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx
Обновление 07.12.12 В Windows 2003 R2, Windows 7 & Сервер 2008, и т.д. вышеупомянутое заменяется Подсистемой для Основанных на UNIX Приложений (SUA) как дополнение. Но необходимо загрузить утилиты: http://www.microsoft.com/en-us/download/details.aspx?id=2391
Я использую Cygwin. Я сталкиваюсь с большим количеством людей, которые не понимают, что при помещении двоичных файлов Cygwin на ПУТЬ можно использовать их из Windows Command shell. Вы не должны выполнять Bash Cygwin.
Вы могли бы также изучить Windows Services для Unix, доступного от Microsoft (но только на Профессионале и выше версий Windows).
Вы могли установить Cygwin ( http://www.cygwin.com/ ) и использовать sed оттуда.
Насколько я знаю, что ничто как sed не связывается окнами. Однако sed доступен для Windows в нескольких различных формах, включая как часть Cygwin, если Вы хотите полную подсистему POSIX, или как собственный исполняемый файл Win32, если Вы хотите работать просто sed на командной строке.
Sed для Windows (Проект GnuWin32)
, Если бы это должно быть собственным к Windows тогда единственная другая вещь, которую я могу предложить, должен был бы использовать язык сценариев, поддерживаемый Windows без дополнений, таких как VBScript.
Вы могли посмотреть Инструменты GNU , они обеспечивают (среди других вещей) sed на окнах.
sed
(и его род) содержатся в нескольких пакетах команд Unix.
sed
, grep
и т.д. из поля, все же. -z
опция в отличие от перечисленных верхних портов , Если Вы не хотите устанавливать что-нибудь, и Ваша система не является Windows Server один, тогда Вы могли использовать язык сценариев (VBScript, например) для этого. Ниже грубый, неподготовленный удар в нем. Ваша командная строка была бы похожа
cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt
, где oldpat и newpat Microsoft vbscript regex шаблоны . Очевидно, я только реализовал команду замены и предположил некоторые вещи, но Вы могли конкретизировать ее, чтобы быть более умными и понять больше sed
командная строка.
Dim pat, patparts, rxp, inp
pat = WScript.Arguments(0)
patparts = Split(pat,"/")
Set rxp = new RegExp
rxp.Global = True
rxp.Multiline = False
rxp.Pattern = patparts(1)
Do While Not WScript.StdIn.AtEndOfStream
inp = WScript.StdIn.ReadLine()
WScript.Echo rxp.Replace(inp, patparts(2))
Loop
Вы могли попробовать powershell. Существуют получать-содержание и содержание набора сборка commandlets, в которой Вы могли использовать.
Это работает на Vista Ultimate, не уверен насчет Pro.
sed -f commandfilename.cmd file1 > file2
Существует Super Sed расширенная версия sed. Для Windows это автономный .exe, предназначенный для запуска из командной строки.