NAME
BackupPC::XS - Perl extension for BackupPC libraries
SYNOPSIS
use
BackupPC::XS;
DESCRIPTION
BackupPC::XS provides various submodules that implement various BackupPC library functions. The following sections describe each submodule.
This documentation is very terse. BackupPC::XS is not intended to be a general-purpose module - it is closely tied to BackupPC. Look in the BackupPC code to see examples of using this module.
BackupPC::XS::FileZIO
Compressed file I/O using zlib:
$fd
= BackupPC::XS::FileZIO::
open
(
$fileName
,
$writeFlag
,
$compressLevel
);
$fd
= BackupPC::XS::FileZIO::fdopen(
$stream
,
$writeFlag
,
$compressLevel
);
$nWrite
=
$fd
->
write
(
$dataRef
);
$nRead
=
$fd
->
read
(
$dataRef
,
$maxRead
);
$textLine
=
$fd
->readLine();
$fd
->rewind();
$fd
->
close
();
$fd
->writeTeeStderr(
$boolean
);
BackupPC::XS::PoolRefCnt
Pool file reference counting:
$countDB
= BackupPC::XS::PoolRefCnt::new(initialEntryCnt);
$refCount
=
$countDB
->get(
$digest
);
$countDB
->set(
$digest
,
$refCount
);
$countDB
->
delete
(
$digest
);
$countDB
->incr(
$digest
,
$refIncr
);
(
$digest
,
$refCnt
,
$idx
) =
$countDB
->iterate(
$idx
);
$countDB
->
read
(
$fileName
);
$countDB
->
write
(
$fileName
);
$countDB
->
();
Pool file delta accumulation:
BackupPC::XS::PoolRefCnt::DeltaFileInit(
$hostDir
);
BackupPC::XS::PoolRefCnt::DeltaFileFlush();
BackupPC::XS::PoolRefCnt::DeltaUpdate(
$digest
,
$refIncr
);
BackupPC::XS::PoolRefCnt::DeltaPrint();
BackupPC::XS::PoolWrite
Writing and matching files in the pool:
$poolWrite
= BackupPC::XS::PoolWrite::new(
$compressLevel
[,
$digest
]);
$poolWrite
->
write
(
$dataRef
);
(
$match
,
$digest
,
$poolSize
,
$error
) =
$poolWrite
->
close
();
$poolWrite
->addToPool(
$fileName
,
$isV3PoolFile
);
BackupPC::XS::Attrib
Manipulating a set of files and attributes (typically one directory's worth):
$a
= BackupPC::XS::Attrib::new(
$compressLevel
);
$attrHash
=
$a
->get(
$fileName
);
$a
->set(
$fileName
,
$attrHash
);
$numDirEntries
=
$a
->count();
$a
->
read
(
$dirPath
,
$attribFileName
);
$a
->
write
(
$dirPath
,
$attribFileName
);
$textType
= BackupPC::XS::Attrib::fileType2Text(BPC_FTYPE_....);
BackupPC::XS::AttribCache
Maintain a cache of directories, with full share/path semantics.
$ac
= BackupPC::XS::AttribCache::new(
$host
,
$backupNum
,
$shareNameUM
,
$compress
);
$attrHash
=
$ac
->get(
$fileName
,
$allocateIfMissing
,
$dontReadInode
);
$ac
->set(
$fileName
,
$attrHash
,
$dontOverwriteInode
);
$ac
->
delete
(
$fileName
);
$attrHash
=
$ac
->getInode(
$inode
,
$allocateIfMissing
);
$ac
->setInode(
$inode
,
$attrHash
);
$ac
->deleteInode(
$inode
);
$ac
->getAll(
$path
,
$dontReadInode
);
$ac
->flush(
$all
,
$path
);
$ac
->getFullMangledPath(
$path
);
BackupPC::XS::DirOps
$zeroMeansOk
= BackupPC::XS::DirOps::path_create(
$path
);
$errorCnt
= BackupPC::XS::DirOps::path_remove(
$path
,
$compress
);
$errorCnt
= BackupPC::XS::DirOps::refCountAll(
$path
,
$compress
);
$lockFd
= BackupPC::XS::DirOps::lockRangeFile(
$lockFile
,
$offset
,
$len
,
$block
);
BackupPC::XS::DirOps::unlockRangeFile(
$lockFd
);
BackupPC::XS::Lib
BackupPC::XS::Lib::ConfInit(
$topDir
,
$hardLinkMax
,
$poolV3Enabled
,
$logLevel
)
$messageArrayRef
= BackupPC::XS::Lib::logMsgGet();
$errorCnt
= BackupPC::XS::Lib::logErrorCntGet;
BackupPC::XS::Lib::logLevelSet(
$level
);
EXPORTS
If you specify :all (see SYNOPSIS), then the BPC_FTYPE_ values are exported.
SEE ALSO
BackupPC, backuppc.sourceforge.net.
rsync-bpc.
AUTHOR
Craig Barratt, <cbarratt@users.sourceforge.net<gt>
COPYRIGHT AND LICENSE
BackupPC code is copyright (C) 2013-2017 Craig Barratt <cbarratt@users.sourceforge.net>.
bpc_hashTable.c is based on code from rsync. Rsync is Copyright (C) 1996-2001 by Andrew Tridgell, 1996 by Paul Mackerras, 2001-2002 by Martin Pool, and 2003-2009 by Wayne Davison, and others.
The md5 library is from the rsync codebase, and is Copyright (C) 2001-2003 Christophe Devine. See the code for the license.
The zlib library is from the rsync codebase, and is Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler. See the code for the license.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, visit the http://fsf.org website.