Мои мысли и проекты

Справка по скрипту Shasoft NodeJS:Backup

Навигация
Счетчики
Cпoнcоры

Справка по скрипту Shasoft NodeJS:Backup


Установка

Для установки просто скачайте данный скрипт с сайта в соответствующую директорию и распакуйте.

Подключение

Строка для подключения
var ShasoftBackup = require("./shasoft-backup");

Сохранение

Сохранение
ShasoftBackup.backup({
        url : "fs://c:/Backup.SB",  // Путь для хранения backup-ов
        path : "c:/MySources",      // Папка для сохранения
        project : "MySources"       // Имя проекта. Должно содержать только символы, которые допустимы в именах файлов
});
Дополнительные необязательные параметры:
  • cryptoID - алгоритм шифрования. Один из алгоритмов из папки shasoft-backup/crypto. По умолчанию = без упаковки('').
  • packerID - алгоритм упаковки. Один из алгоритмов из папки shasoft-backup/packer. По умолчанию = 'node'. В общем то других в стандартной поставки и нет ;).
  • password - пароль для шифрования.

Восстановление

Восстановление
ShasoftBackup.restore({
        url : "fs://c:/Backup.SB",  // Путь для хранения backup-ов
        path : "c:/MySources",      // Папка для восстановления. Конечная пупка будет выглядеть как <имя проекта>.<дата/время восстановления>
        project : "MySources"       // Имя проекта. Должно содержать только символы, которые допустимы в именах файлов
});
Дополнительные необязательные параметры:
  • cryptoID - алгоритм шифрования. Один из алгоритмов из папки shasoft-backup/crypto. По умолчанию = без упаковки('').
  • packerID - алгоритм упаковки. Один из алгоритмов из папки shasoft-backup/packer. По умолчанию = 'node'. В общем то других в стандартной поставки и нет ;).
  • password - пароль для шифрования.

Свой алгоритм шифрования

Вы можете написать свой алгоритм шифрования. Для этого нужно чтобы ваш модуль возвращал Duplex поток для шифровки/расшифровки данных.
  • Метод createCipher - поток для шифрования.
  • Метод createDecipher для расшифровки
В качестве образца привожу пример шифрования с помощью операции XOR
Алгоритм шифрования с помощью операции XOR
// Подключить нужные модули
var stream = require("stream");
var util = require("util");
// Класс для шифрования
function XOR(options) {
        // Создать объект
        if (!(this instanceof XOR)) {
                return new XOR(options);
        }
 
        // Определить байт для операции XOR
        this._byteXOR = 0xAB;
       
        // Инициализация stream.Transform
        stream.Transform.call(this, options);
}
util.inherits(XOR, stream.Transform);
// Функция трансформации данных
XOR.prototype._transform = function (chunk, enc, cb) {
        // Зашифровать/расшифровать данные
        for(var i=0;i<chunk.length;i++)
        {
                chunk[i] ^= this._byteXOR;
        }
        // Данные преобразованы
        this.push(chunk, enc);
        // Вызвать функцию завершения работы
        cb();
};     
// Основная функция
module.exports = {
        // Создать класс для шифрования
        createCipher : function(options) {
                return new XOR(options);
        },
        // Создать класс для дешифровки
        createDecipher : function(options) {
                return new XOR(options);
        }      
};
Чтобы ваш алгоритм можно было использовать, поместите файл в папку shasoft-backup/crypto

Свой алгоритм упаковки

Вы можете написать свой алгоритм упаковки. Для этого нужно чтобы ваш модуль возвращал Duplex поток для шифровки/расшифровки данных.
  • Метод createPacker - поток для упаковки.
  • Метод createUnpacker для распаковки

Свой класс для работы с хранилищем данных

Ссылка хранилища задаётся в таком формате [тип хранилища://][адрес хранилища]. Модуль для работы с хранилищем должен содержать два метода
  • put(url,filename,rs,callback(err)) - метод для записи потока данных rs в хранилище
    • url - адрес хранилища
    • filename - имя файла
    • rs - поток для чтния данных
    • callback(err) - функция обратного вызова. Вызывается после завершения операции.
  • get(url,filename,ws,callback(err)) - метод для чтения файла из хранилища в поток ws
    • url - адрес хранилища
    • filename - имя файла
    • ws - поток для записи данных
    • callback(err) - функция обратного вызова. Вызывается после завершения операции.
При этом в метод передается адрес хранилища (т.е. тип хранилища в метод не передается). На текущий момент реализована работа со следующими типами хранилищ:
  • fs - файловая система. Адресом хранилища является путем до директории: fs://<Путь до директории>
  • yadisk - yandex-диск. Адрес имеет вид: yadisk://<логин>:<пароль>@<папка хранилища>