Команда XCOPY копирование файлов с расширенным сервисом. Батник для резервного копирования


Утилита XCopy - одно из самых старых и полезных средств перемещения данных. Назначение XCopy состоит в изменении местоположения папок. Проводник во многом заменил эту утилиту, и по возможности мы рекомендуем пользоваться именно им. Тем не менее, существуют несколько важных применений утилиты XCopy:

  • сценарии для манипуляций с файлами;
  • перемещение отдельных файлов в сложной структуре;
  • копирование всех доступных файлов, даже если некоторые файлы не могут быть перемещены;
  • архивирование данных из одной системы на другую;
  • перемещение файлов с конкретными атрибутами.

Многие используют утилиту XCopy в качестве приложения для архивации, поскольку она замечательно справляется с этой задачей. Вы можете легко скопировать файлы данных из папки на архивный носитель, например, другой жесткий диск, дискету, Zip-накопитель или сетевой накопитель. К сожалению, утилита XCopy не поддерживает такой традиционный носитель, как магнитная лента. Кроме того, носитель, на который производится копирование, должен быть размечен, поэтому XCopy не позволяет записывать файлы на компакт диски.

Как пользоваться?

Утилита XCopy используется так же, как и стандартная команда копирования - с указанием исходных и целевых файлов. Например, чтобы скопировать все файлы из папки MyDir диска C в одноименную папку диска D, введите команду:

XCopy C:\MyDir\*.* D:\MyDiг\*.*

Затем нажмите клавишу Enter. Утилита XCopy поддерживает набор ключей, наиболее важные из которых перечислены ниже.

Дополнительные ключи

/A и /M - копируются только архивные файлы. С помощью этих ключей утилиту XCopy можно использовать для архивации. Ключ /M также сбрасывает архивный атрибут с копируемых файлов, что указывает на создание их резервной копии. Таким образом, при использовании XCopy как приложения для архивации следует применять исключительно ключ /M.

/C - продолжает копирование даже при появлении ошибок данных. Используйте эту функцию, чтобы скопировать из поврежденной папки все возможное содержимое в новое место. Проводник лишен подобной функции - копирование прекращается после первой ошибки.

/G - позволяет копировать зашифрованные файлы в место, не поддерживающее шифрование. Эта функция дешифрирует файл, и для ее выполнения вы должны иметь соответствующие системные права.

/H - копирует скрытые и системные файлы.

/K - копирует атрибуты файлов вместе с самими файлами. В обычном режиме утилита XCopy лишает файлы атрибута «только чтение».

/O и /X - защита скопированных файлов. Ключ /O вместе с файлом копирует информацию о его владельце и таблицу управления доступом. Таблица управления доступом содержит сведения о пользователях, имеющих право доступа к файлу, и действиях, которые они могут с ним вы-полнять. Ключ /X также копирует информацию аудита файла. Эта функция важна при слежении за доступом к файлу.

/R - перезаписывает файлы с атрибутом «только чтение» при копировании. Используйте этот ключ при архивации, чтобы версии файлов, защищенных от записи, обновлялись в резервной копии.

/S и /E - копируют файлы не только из текущей папки, но и из всех вложенных в нее папок. Ключ /E также копирует пустые вложенные папки. Указанные ключи позволяют не только выполнить копирование файлов, но и сохранить структуру папки.

/T - создает копию структуры исходной папки, не копируя никаких файлов. Пользуйтесь этой функцией для создания новых проектов. Иногда бывает полезно лишь повторить структуру папки, не копируя из нее конкретную информацию.

/U - копирует из исходной папки только те файлы, которые присутствуют в целевой папке. Эта функция помогает обновить часть файлов целевой папки, избавляя от необходимости указывать каждый файл отдельно.

/V - проверяет все скопированные файлы, сравнивая их содержимое с исход-ными файлами. Данный ключ увеличивает время копирования, однако его всегда следует использовать при архивации посредством утилиты XCopy. В противном случае есть риск занести в резервную копию поврежденные данные и не узнать об этом.

Указанные при описании команды COPY проблемы можно решить с помощью команды XCOPY, которая предоставляет намного больше возможностей при копировании. Необходимо отметить, что XCOPY может работать только с файлами и каталогами, но не с устройствами.

Синтаксис команды:

Xcopy источник [результат] [ключи]

Команда XCOPY имеет множество ключей, ниже дано описание некоторых из них.

Ключ /D[:[дата]] позволяет копировать только файлы, измененные не ранее указанной даты. Если параметр дата не указан, то копирование будет производиться только если источник новее результата.

Например, команда

XCOPY "C:\Мои документы\*.*" "D:\BACKUP\Мои документы" /D

скопирует в каталог "D:\BACKUP\Мои документы" только те файлы из каталога "C:\Мои документы", которые были изменены со времени последнего подобного копирования или которых вообще не было в "D:\BACKUP\Мои документы".

Ключ /S позволяет копировать все непустые подкаталоги в каталоге-источнике.

С помощью ключа /E можно копировать все подкаталоги, включая и пустые.

Если указан ключ /C , то копирование будет продолжаться даже в случае возникновения ошибок. Это бывает очень полезным при операциях копирования, производимых над группами файлов, например, при резервном копировании данных.

Ключ /I важен для случая, когда копируются несколько файлов, а файл назначения отсутствует. При задании этого ключа команда XCOPY считает, что файл назначения должен быть каталогом. Например, если задать ключ /I в команде копирования всех файлов с расширением txt из текущего каталога в несуществующий еще подкаталог TEXT,

XCOPY *.txt TEXT /I

то подкаталог TEXT будет создан без дополнительных запросов.

Ключи /Q , /F и /L отвечают за режим отображения при копировании. При задании ключа /Q имена файлов при копировании не отображаются, ключа /F - отображаются полные пути источника и результата. Ключ /L обозначает, что отображаются только файлы, которые должны быть скопированы (при этом само копирование не производится).

С помощью ключа /H можно копировать скрытые и системные файлы, а с помощью ключа/R - заменять файлы с атрибутом "Только для чтения".

Например, для копирования всех файлов из корневого каталога диска C: (включая системные и скрытые) в каталог SYS на диске D:, нужно ввести команду:

XCOPY C:\*.* D:\SYS /H

Ключ /T позволяет применять XCOPY для копирования только структуры каталогов источника, без дублирования находящихся в этих каталогах файлов, причем пустые каталоги и подкаталоги не включаются. Для того, чтобы все же включить пустые каталоги и подкаталоги, нужно использовать комбинацию ключей/T /E .

Используя XCOPY можно при копировании обновлять только уже существующие файлы (новые файлы при этом не записываются). Для этого применяется ключ /U. Например, если в каталоге C:\2 находились файлы a.txt и b.txt, а в каталоге C:\1 - файлы a.txt, b.txt, c.txt и d.txt, то после выполнения команды

XCOPY C:\1 C:\2 /U

в каталоге C:\2 по-прежнему останутся лишь два файла a.txt и b.txt, содержимое которых будет заменено содержимым соответствующих файлов из каталога C:\1.

Если с помощью XCOPY копировался файл с атрибутом "Только для чтения", то по умолчанию у файла-копии этот атрибут снимется. Для того, чтобы копировать не только данные, но и полностью атрибуты файла, необходимо использовать ключ /K .

Ключи /Y и/-Y определяют, нужно ли запрашивать подтверждение перед заменой файлов при копировании./Y означает, что такой запрос нужен,/-Y - не нужен.

Иногда хочется хочется не только любви, славы и карьеры, а еще и некоторой автоматизации.

Опять же по примеру вернемся немного к основам.

Хочу рассказать о том, как написать простой батник для резервного копирования из определенного источника по указанному пути.

Копирует файлы и каталоги, включая подкаталоги. Ниже приведен синтаксис работы.

Синтаксис утилиты xcopy

xcopy источник [результат ] [/w ] [/p ] [/c ] [/v ] [/q ] [/f ] [/l ] [/g ] [/d [: мм-дд-гггг ]] [/u ] [/i ] [/s [/e ]] [/t ] [/k ] [/r ] [/h ] [{/a |/m }] [/n ] [/o ] [/x ] [/exclude: файл1 [+ [файл2 ]][+ [файл3 ]] [{/y |/-y }] [/z ]

Параметры

источник Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь. результат Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию. /w Выводит следующее сообщение с ожиданием подтверждения начала копирования:

Нажмите любую клавишу, чтобы начать копирование файлов

/p Запрашивает подтверждение при создании каждого файла-результата. /c Игнорирует ошибки. /v Проверяет каждый скопированный файл на соответствие его оригиналу. /q Отменяет вывод на экран сообщений команды xcopy . /f Выводит имена исходных файлов и файлов-результатов в процессе копирования. /l Отображает список копируемых файлов. /g Создает незашифрованные файлы-результаты. /d [: мм-дд-гггг ] Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг , команда xcopy копирует все файлы-источники , которые новее существующих файлов-результатов . Эта возможность позволяет обновлять только измененные файлы. /u Копирует (обновляет) только те файлы-источники , которые уже существуют в каталоге результата . /i Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат - это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом. /s Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом. /e Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t . /t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e . /k Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения». /r Копирует файлы с атрибутом «только для чтения». /h Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы. /a Копирует только те файлы, которые имеют установленный атрибут «архивный». При использовании параметра /a атрибут "архивный" у исходных файлов не меняется. Сведения об установке атрибутов с помощью команды attrib см. по ссылке «». /m Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a , параметр /m очищает атрибут «архивный» у скопированных файлов. Сведения об установке атрибутов с помощью команды attrib см. по ссылке «». /n Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS. /o Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL). /x Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p ). /exclude: файл1 [+ [файл2 ]][+ [файл3 ]] Определяет список файлов, содежащих строки. /y Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла. /-y Выдает запрос на подтверждение перезаписи существующего конечного файла. /z Копирует по сети в режиме перезапуска. /? Отображает справку в командной строке.

Создаем тестовый файл с содержанием:

xcopy C:\сайт\copy C:\сайт\backup /f /i /y /s

Где C:\сайт\copy — то что мы копируем, а C:\itescforu.ru\backup — путь куда копируем.

Переименовыем файл из.txt в.bat и при необходимости запускаем 🙂

www.сайт

Копирует файлы и директории, включая вложенные директории. Работает в командной строке Windows .

Синтаксис команды:

xcopy источник [целевой_объект] ] ] [{/a|/m}] ][+] [{/y|/-y}]

Параметры:

источник: обязательный параметр. Определяет расположение и имена файлов которые вам нужно скопировать. Данный параметр должен включать устройство или путь.

целевой_объект: Опеределяет место назначения копируемых файлов. Может включать в себя букву диска с двоеточием, имя директории, имя файла, или комбинацию их.

/w: отображает сообщение "Press any key to begin copying file(s)" и ждет вашего ответа прежде чем начать копирование файлов.

/p: будет выдавать запрос перед созданием каждого файла.

/c: игнорирование ошибок.

/v: проверяет каждый файл после их записи на идентичность исходным. В Windows XP он не используется. Оставлен для совместимости с MS-DOS файлами

/q: тихий режим. Не выводит сообщения во время работы.

/f: отображает имена файлов при копировании.

/l: отобразить имена файлов которые будут копироваться.

/g: Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование.

/d[:mm-dd-yyyy] : копировать файлы которые изменены позже указаной даты, включаю указанную. Если не указать значение mm-dd-yyyy (месяц-день-год), xcopy будет копировать файлы которые более новые чем в папке назначения. Вообщем эта команда позволяет обновить файлы, которые изменились.

/u: копировать только те файлы которые уже есть в папке назначения. Т.е. обновить их.

/i: если источник это директория или содержит wildcards (ну типа *) и целевой_объект не указан, то xcopy предполагает что целевой_объект это директория и создает ее. По умолчанию xcopy запрашивает у вас целевой_объект это директория или файл.

/s: директории и поддиректории в которых нет файлов будут пропущены. Если опустить этот параметр, xcopy работает внутри одной директории.

/e: копировать все поддиректории, даже если они пустые. Эквивалентен сочетанию ключей /s /e . Совместим с ключом /t .

/t: Создание структуры каталогов без копирования файлов. Пустые каталоги и подкаталоги не включаются в процесс копирования. Для создания пустых каталогов и подкаталогов используйте сочетание ключей /t /e .

/k: при копировании сохраняется атрибут "только для чтения". По умолчанию он сбрасывается.

/r: перезапись файлов, предназначенных только для чтения.

/h: копировать скрытые и системные файлы. По умолчанию xcopy не копирует эти файлы.

/a: копировать файлы у которых имеется атрибут архива. Сам атрибут при этом сохраняется. Для установки этого атрибута можно использовать команду attrib.

/m: почти тоже что и с ключем /a , только в данном случае атрибут архива будет сбрасываться у исходных файлов.

/n: делает имена файлов и папок короткими. Может понадобиться в случае копирования с FAT на NTFS. Потомучто FAT (8.3 символа) не поддерживает длинные имена как NTFS.

/o: копируется информация о пользователе файла и информация DACL (discretionary access control list).

/x: копирование параметров аудита файлов и информация SACL (подразумевает ключ /o).

/exclude:файл1[+[файл2]][+[файл3]] ... : список файлов, содержащих строки с критериями для исключения файлов и папок из процесса копирования. Каждая строка должна располагаться в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или.obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно.

/y: чтобы не спрашивал когда нужно перезаписать уже существующий файл.

/-y: противоположность ключу /y .

/z: копировать по сети в возобновляемом режиме.

/? : вывести помощь. Подсказки по параметрам команды.

Примеры использования xcopy

Как скопировать папку в другую папку, сохранив при этом ее разрешения

Когда копируете файлы и папки в проводнике Windows, разрешения этих файлов и папок изменятся. Файлы будут помечены как новые, и наследуют разрешения папки в которую копируем. В качестве создателя файла будет указана ваша учетка.

Примечание: У вас должны быть права на запись в папку которую собираетесь копировать файлы.

Для сохранения первоначальных разрешений файлов, вам нужно воспользоваться следующими параметрами /O, /X, /E, /H и /K, которые означают следующее:

  • /E - Копирует все файлы и папки, включая пустые.
  • /H - Копирует также скрытые и системные файлы.
  • /K - Копирует атрибуты. По умолчанию команда "Xcopy" снимает атрибут "Только чтение".
  • /O - Копирует информацию о владельце и ACL.
  • /X - Копирует настройки аудита (требуется параметр "/O").

Примечание: Данная процедура не отменяет наследуемые разрешения. Будут применяны следующие наследуемые разрешения:

  • Настройки безопасности, примененные непосредственно к файлам и папкам, сохраняются.
  • Настройки безопасности, унаследованные от папки назначения, теряются.
  • Настройки безопасности папки назначения наследуются.
  • При перемещении файлов или папок на диск с файловой системой FAT, данные файлы и папки теряют свои разрешения NTFS, так как разделы FAT не поддерживают разрешения NTFS.

Пример

xcopy c:\oldfolder c:\newfolder /O /X /E /H /K , где "oldfolder" - это папка, содержащая копируемые файлы, а "newfolder" - это папка назначения.

В современных версиях Windows удобнее использовать программу

Xcopy - команда консольного режима операционной системы Windows. Служит для копирования одного или несколько файлов и (или) папок из одного места в другое. Она также является командой операционной системы MS-DOS. Благодаря множеству опций и возможности копировать целые каталоги xcopy похожа на традиционную copy, но обладает гораздо большими возможностями. Если же требуется еще большая функциональность, то операционная система располагает командой robocopy, которая оперирует еще параметров.

Синтаксис

Формат командной строки следующий:

xcopy источник [приемник ] ] [+file3 ]...]

Источник определяет имя файла или папки верхнего уровня, из которых будет производиться копирование. Это единственный обязательный параметр команды xcopy. В случае если в имени файла или каталога содержатся пробелы, его следует заключить в кавычки.

Приемник, или целевой объект, является параметром, указывающим на место, куда должны быть скопированы исходные файлы или папки. Если он не указан, то источник будет сохранен в той же директории, в которой запускается команда xcopy. Если в названии места назначения содержатся пробелы, то его следует заключить в кавычки.

/a

При использовании этой опции будут копироваться только архивные файлы, найденные в источнике. Нельзя применять /a и /m одновременно.

/b

Данный параметр применяется для копирования символьной ссылки, а не того, но что она ссылается. Впервые появился в Windows Vista.

Эта опция вынуждает xcopy продолжать работу даже в случае возникновения ошибки.

/d [: дата]

Команда xcopy с опцией /d и следующей за ней конкретной датой в формате MM-ДД-ГГГГ предназначена для копирования файлов , измененных в указанный день или позже. Также можно использовать этот параметр без определенного временного значения, чтобы выбрать только те части источника, которые новее документов с таким же именем в приемнике. Применяется для выполнения обычного файлов.

При использовании отдельно или с опцией /s действие параметра совпадает с /s, но также создает пустые папки в приемнике, если они были такими в источнике. Ключ /e тоже можно использовать вместе с /t. Это позволяет включить пустые каталоги и подкаталоги, найденные в исходной директории, в структуру каталогов, создаваемую в месте назначения.

/f

Данная опция отображает полный путь и имя исходного и целевого файлов.

/g

Используя xcopy с этой опцией, можно копировать зашифрованные файлы из источника в приемник, который не поддерживает шифрование. Ключ не будет работать при репликации данных с EFS-диска на другой зашифрованный диск иного типа.

/h

Xcopy по умолчанию не копирует скрытые или системные файлы , но с данным параметром может это сделать.

/i

/EXCLUDE:файл1[+файл 2][+ файл 3]… – позволяет исключить несколько файлов или папок из процесса копирования. Тут все просто, надо только указать имена объектов, которые следует исключить, но, нельзя использовать спецсимволы, типа «*» и «?». Ключи файл1, файл2, … указывают на документы, в которых прописаны строки, каждая строка должна находится в отдельной линии. Если же хоть одна из строк будет совпадать с любой частью абсолютного пути копируемого документа, то скопировать с помощью командной строки данный файл не получится. Допустим в каталоге D:DATA есть три документа с расширением txt: data1.txt, data2.txt и data3.txt. Откроем CMD и пропишем в ней следующие команды:

echo data1.txt>exclude.txt

echo data2.txt>>exclude.txt

В данном примере мы создали в текущем каталоге текстовый документ exlude.txt, в котором прописаны две строчки data1.txt и data2.txt. Символ «>>» отличается от символа «>» только тем, что дописывает данные в конец документа, а не затирает все содержимое новой информацией . Ладно, теперь попробуем выполнить следующие директивы:

XCOPY *.txt D:DATA /EXCLUDE: exclude.txt – в данном примере из текущей папки в папку D:DATA мы скопировали все документы с расширение txt кроме файлов data1 и data2.

Другой пример, если указать строки вида OBJ или.OBJ, то из процесса будут исключены все объекты из папки OBJ и все объекты с расширением.OBJ.

/Z – позволяет дублировать сетевые документы с возобновлением.

Как известно, файловая система приписывает каждому файлу/документу владельца, как правило, это тот пользователь, который создал данный документ. При использовании команд и XCOPY командной строки информация о старом владельце затирается, и владельцем копии становится тот юзер, под учетной записью которого собственно и производилось копирование файлов из командной строки.

и /M – задаем режим для архивных документов. Первый ключ после дублирования объекта оставляет у него атрибут «Архивный», второй же ключ отключает этот атрибут по завершении процесса манипуляций.

/O данный параметр позволяет скопировать только те данные, которые были изменены не ранее указанной даты (дата у указывается в атрибуте /D[:дата], если сама дата не указана, то копирование будет производиться, только если источник новее результата). Например:

XCOPY "С:My document*.*" "D:RESERVEMy document" /D

Тут будет произведено копирование только тех файлов через командную строку, которые были изменены со времени последнего подобного манипулирования или которых вообще не было в D: RESERVEMy document.

/S – данный ключ указывает, что кроме документов надо произвести и копирование папки, при условии, что она (они) не является пустой.

– данный ключ подобен предыдущему, с той только разницей, что позволяет произвести копирование пустой папки через командную строку.

/W – будет включен режим запроса на нажатие любой клавиши перед началом дублирования.

/C – процесс копирования будет продолжен, даже если произошла ошибка

/I – Данный ключ говорит, что объект назначения должен быть каталогом. Например, если задать ключ /I в команде копирования всех объектов с расширением txt из текущего каталога в несуществующий еще подкаталог TEXT:

XCOPY *.txt TEXT /I

то подкаталог TEXT будет создан без дополнительных запросов.

/Q – этот ключ не будет отображать имена во время процесса

/F – этот ключ будет отображать полные пути источника и результата во время процесса

/L – это ключ всего-навсего отобразит те документы, которые надо скопировать, при этом сам процесс не произойдет.

/H – позволяет дублировать скрытые и системные документы.

/K - заменять объекты с атрибутом “Только для чтения”

/T – создает слепок структуры копируемых папок, но, самих документов не копирует, также не включаются пустые каталоги. Для того чтобы все же включить пустые каталоги и подкаталоги, нужно использовать комбинацию ключей /T /Е .

/U – обновляет содержимое каталога, то есть, копирует лишь те файлы, что уже имеются в каталоге.

/Y и /-Y определяют, нужно ли запрашивать подтверждение перед заменой. /Y означает, что такой запрос нужен, /-Y - не нужен.

/N – копирование с помощью командной строки с использованием сгенерированных коротких имен.

Как уже упоминалось выше, при использовании утилит COPY и XCOPY информация о прежнем владельце затирается. Что бы этого не происходило, можно воспользоваться командой SCOPY из пакета Resource Kit , которая имеет следующий синтаксис:

SCOPY источник [результат]

– позволяет дублировать информацию о владельце

– дублирование информации связанной с аудитом доступа к файлу или каталогу

/S – копирование файлов через командную строку из всех подкаталогов указанного каталога.

Запись в потоки NTFS

И еще, хотелось бы вспомнить о таком понятии как «копирование в потоки». Данный вопрос я частично затронул в статье с примерами по при описании метода объект FileSystemObject. Данная возможность предоставляется только на файловой системе NTFS . В простом варианте суть дела такова, к каждому документу или диску можно привязать свой поток, и записать информацию непосредственно в поток, то есть, информация будет записана, но сам документ не изменит своего размера. Давайте проделаем простенький эксперимент, пропишем в командной строке:

echo “Hellow, word”>new.txt:potok.txt – в данном примере мы создали текстовый документ new.txt, а фразу Hellow, word скопировали в поток potok.txt. Если выполнить команду notepad new.txt, то мы ничего не увидим, но, если выполнить так:

notepad new.txt.potok.txt – то мы увидим заветную фразу Hellow, word.

Командная строка xcopy команда.

При удалении файла, удаляется и поток, привязанный к нему. Есть один довольно примитивный способ узнать, что в нашем якобы пустом документе что-то зашито, это поместить его в архив, как результат, нулевой размер документа увеличится при архивировании.

Похожие публикации