Полное руководство: копирование папок в Node.js

Копирование папок в Node.js — распространенная задача при работе с файловыми системами. Если вам нужно дублировать папку для резервного копирования или создать новую структуру каталогов, для этого существует несколько способов. В этой статье мы рассмотрим различные подходы к копированию папок в Node.js, а также приведем примеры кода для каждого метода.

Метод 1: использование модуля fs-extra
Модуль fs-extra — это расширенная версия основного модуля fs в Node.js, предоставляющая дополнительные функции. Чтобы скопировать папку с помощью fs-extra, выполните следующие действия:

const fs = require('fs-extra');
// Define source and destination paths
const sourcePath = '/path/to/source/folder';
const destinationPath = '/path/to/destination/folder';
// Copy the folder
fs.copySync(sourcePath, destinationPath);

Метод 2: использование модуля fs (рекурсивное копирование)
Если вы предпочитаете использовать основной модуль fs, вы можете выполнить копирование папок с помощью рекурсивного подхода. Вот пример:

const fs = require('fs');
function copyFolderSync(source, destination) {
  // Create destination folder
  fs.mkdirSync(destination);
  // Read source folder
  const files = fs.readdirSync(source);
  // Iterate through files
  files.forEach((file) => {
    const current = fs.lstatSync(`${source}/${file}`);
    if (current.isDirectory()) {
      // Recursively copy sub-folders
      copyFolderSync(`${source}/${file}`, `${destination}/${file}`);
    } else {
      // Copy files
      fs.copyFileSync(`${source}/${file}`, `${destination}/${file}`);
    }
  });
}
// Usage:
copyFolderSync('/path/to/source/folder', '/path/to/destination/folder');

Метод 3: использование execSync с командами оболочки
Если вы предпочитаете выполнять команды оболочки из Node.js, вы можете использовать функцию execSyncдля синхронного запуска команд оболочки. Вот пример использования команды cp:

const { execSync } = require('child_process');
// Define source and destination paths
const sourcePath = '/path/to/source/folder';
const destinationPath = '/path/to/destination/folder';
// Copy the folder using shell command
execSync(`cp -R ${sourcePath} ${destinationPath}`);

В этой статье мы рассмотрели различные способы копирования папок в Node.js. Мы обсудили использование модуля fs-extra для расширенной функциональности, рекурсивный подход с модулем fs и выполнение команд оболочки с помощью execSync. В зависимости от ваших предпочтений и требований проекта вы можете выбрать наиболее подходящий метод копирования папок в Node.js.

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

Используя эти методы, вы можете легко копировать папки в Node.js и оптимизировать работу файловой системы.