Specificy a tempdir for duplicity on the same partition as the source
files. This allows deja-dup to proceed by back-ups without filling up /tmp -- from RH Bugzilla.
This commit is contained in:
parent
9e92d06266
commit
3d84582f38
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: Makefile,v 1.14 2012/09/27 07:35:56 ajacoutot Exp $
|
||||
# $OpenBSD: Makefile,v 1.15 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
|
||||
SHARED_ONLY= Yes
|
||||
|
||||
@ -6,6 +6,7 @@ COMMENT= simple encrypted backup tool for GNOME
|
||||
|
||||
GNOME_VERSION= 24.0
|
||||
GNOME_PROJECT= deja-dup
|
||||
REVISION= 0
|
||||
|
||||
CATEGORIES= sysutils x11/gnome
|
||||
|
||||
@ -19,23 +20,22 @@ PERMIT_PACKAGE_FTP= Yes
|
||||
PERMIT_DISTFILES_CDROM= Yes
|
||||
PERMIT_DISTFILES_FTP= Yes
|
||||
|
||||
WANTLIB += GL X11 Xau Xcomposite Xcursor Xdamage Xdmcp Xext Xfixes
|
||||
WANTLIB += Xi Xinerama Xrandr Xrender Xxf86vm atk-1.0 c cairo
|
||||
WANTLIB += cairo-gobject dbus-1 drm expat ffi fontconfig freetype
|
||||
WANTLIB += gcrypt gdk-3 gdk_pixbuf-2.0 gio-2.0 girepository-1.0
|
||||
WANTLIB += GL ICE SM X11 Xau Xcomposite Xcursor Xdamage Xdmcp
|
||||
WANTLIB += Xext Xfixes Xi Xinerama Xrandr Xrender atk-1.0 atk-bridge-2.0
|
||||
WANTLIB += atspi c cairo cairo-gobject dbus-1 expat ffi fontconfig
|
||||
WANTLIB += freetype gcrypt gdk-3 gdk_pixbuf-2.0 gio-2.0 girepository-1.0
|
||||
WANTLIB += glib-2.0 gmodule-2.0 gnome-keyring gobject-2.0 gpg-error
|
||||
WANTLIB += gthread-2.0 gtk-3 m nautilus-extension notify pango-1.0
|
||||
WANTLIB += pangocairo-1.0 pangoft2-1.0 pcre peas-1.0 pixman-1
|
||||
WANTLIB += png pthread pthread-stubs stdc++ xcb xcb-render xcb-shm
|
||||
WANTLIB += ICE SM atk-bridge-2.0 atspi harfbuzz icudata icule
|
||||
WANTLIB += z icuuc
|
||||
WANTLIB += gthread-2.0 gtk-3 harfbuzz icudata icule icuuc m nautilus-extension
|
||||
WANTLIB += notify pango-1.0 pangocairo-1.0 pangoft2-1.0 pcre peas-1.0
|
||||
WANTLIB += pixman-1 png pthread pthread-stubs xcb xcb-render xcb-shm
|
||||
WANTLIB += z
|
||||
|
||||
MASTER_SITES= https://launchpad.net/deja-dup/${GNOME_VERSION:C/^([0-9]+).*/\1/}/${GNOME_VERSION}/+download/
|
||||
|
||||
MODULES= devel/dconf \
|
||||
devel/gettext \
|
||||
x11/gnome \
|
||||
lang/python
|
||||
lang/python \
|
||||
x11/gnome
|
||||
|
||||
MODGNOME_TOOLS= yelp
|
||||
MODGNOME_DESKTOP_FILE= Yes
|
||||
@ -43,9 +43,9 @@ MODGNOME_ICON_CACHE= Yes
|
||||
|
||||
LIBTOOL_FLAGS= --tag=disable-static
|
||||
|
||||
BUILD_DEPENDS= lang/vala>=0.17.5
|
||||
BUILD_DEPENDS= lang/vala
|
||||
|
||||
RUN_DEPENDS= sysutils/duplicity>=0.6.15
|
||||
RUN_DEPENDS= sysutils/duplicity
|
||||
|
||||
LIB_DEPENDS= devel/libpeas \
|
||||
x11/gnome/nautilus
|
||||
|
145
sysutils/deja-dup/patches/patch-common_CommonUtils_vala
Normal file
145
sysutils/deja-dup/patches/patch-common_CommonUtils_vala
Normal file
@ -0,0 +1,145 @@
|
||||
$OpenBSD: patch-common_CommonUtils_vala,v 1.1 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=892063
|
||||
|
||||
--- common/CommonUtils.vala.orig Tue Aug 21 17:08:23 2012
|
||||
+++ common/CommonUtils.vala Mon Jan 21 08:43:45 2013
|
||||
@@ -444,6 +444,9 @@ public bool initialize(out string header, out string m
|
||||
var unused_backend = DejaDup.Backend.get_default();
|
||||
unused_backend = null;
|
||||
|
||||
+ // And cleanup from any previous runs
|
||||
+ clean_tempdirs.begin();
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -580,6 +583,128 @@ public Date get_full_backup_threshold_date()
|
||||
date.subtract_days(days);
|
||||
|
||||
return date;
|
||||
+}
|
||||
+
|
||||
+public bool ensure_directory_exists(string path)
|
||||
+{
|
||||
+ var gfile = File.new_for_path(path);
|
||||
+ try {
|
||||
+ if (gfile.make_directory_with_parents())
|
||||
+ return true;
|
||||
+ }
|
||||
+ catch (IOError.EXISTS e) {
|
||||
+ return true; // ignore
|
||||
+ }
|
||||
+ catch (Error e) {
|
||||
+ warning("%s\n", e.message);
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+// By default, duplicity uses normal tmp folders like /tmp to store its
|
||||
+// in-process files. These can get quite large, especially when restoring.
|
||||
+// You may need up to twice the size of the largest source file.
|
||||
+// Because /tmp may not be super large, especially on systems that use
|
||||
+// tmpfs by default (e.g. Fedora 18), we try to use a tempdir that is on
|
||||
+// the same partition as the source files.
|
||||
+public async string get_tempdir()
|
||||
+{
|
||||
+ var tempdirs = get_tempdirs();
|
||||
+
|
||||
+ // First, decide the "main include". Assume that if $HOME
|
||||
+ // is present, that is it. Else, the first include we find decides it.
|
||||
+ // This is admittedly fast and loose, but our primary concern is just
|
||||
+ // avoiding silly choices like tmpfs or tiny special /tmp partitions.
|
||||
+ var settings = get_settings();
|
||||
+ var include_val = settings.get_value(INCLUDE_LIST_KEY);
|
||||
+ var include_list = parse_dir_list(include_val.get_strv());
|
||||
+ File main_include = null;
|
||||
+ var home = File.new_for_path(Environment.get_home_dir());
|
||||
+ foreach (var include in include_list) {
|
||||
+ if (include.equal(home)) {
|
||||
+ main_include = include;
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (main_include == null)
|
||||
+ main_include = include;
|
||||
+ }
|
||||
+ if (main_include == null)
|
||||
+ return tempdirs[0];
|
||||
+
|
||||
+ // Grab that include's fs ID
|
||||
+ string filesystem_id;
|
||||
+ try {
|
||||
+ var info = yield main_include.query_info_async(FileAttribute.ID_FILESYSTEM,
|
||||
+ FileQueryInfoFlags.NONE);
|
||||
+ filesystem_id = info.get_attribute_string(FileAttribute.ID_FILESYSTEM);
|
||||
+ }
|
||||
+ catch (Error e) {
|
||||
+ return tempdirs[0];
|
||||
+ }
|
||||
+
|
||||
+ // Then, see which of our possible tempdirs matches that partition.
|
||||
+ foreach (var tempdir in tempdirs) {
|
||||
+ string temp_id;
|
||||
+ ensure_directory_exists(tempdir);
|
||||
+ try {
|
||||
+ var gfile = File.new_for_path(tempdir);
|
||||
+ var info = yield gfile.query_info_async(FileAttribute.ID_FILESYSTEM,
|
||||
+ FileQueryInfoFlags.NONE);
|
||||
+ temp_id = info.get_attribute_string(FileAttribute.ID_FILESYSTEM);
|
||||
+ }
|
||||
+ catch (Error e) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (temp_id == filesystem_id)
|
||||
+ return tempdir;
|
||||
+ }
|
||||
+
|
||||
+ // Fallback to simply using the highest preferred tempdir
|
||||
+ return tempdirs[0];
|
||||
+}
|
||||
+
|
||||
+public string[] get_tempdirs()
|
||||
+{
|
||||
+ var tempdir = Environment.get_variable("DEJA_DUP_TEMPDIR");
|
||||
+ if (tempdir != null && tempdir != "")
|
||||
+ return {tempdir};
|
||||
+ // Prefer directories that have their own cleanup logic in case ours isn't
|
||||
+ // run for a while. (e.g. /tmp every boot, /var/tmp every now and then)
|
||||
+ return {Environment.get_tmp_dir(), "/var/tmp",
|
||||
+ Path.build_filename(Environment.get_user_cache_dir(), Config.PACKAGE,
|
||||
+ "tmp")};
|
||||
+}
|
||||
+
|
||||
+public async void clean_tempdirs()
|
||||
+{
|
||||
+ var tempdirs = get_tempdirs();
|
||||
+ const int NUM_ENUMERATED = 16;
|
||||
+ foreach (var tempdir in tempdirs) {
|
||||
+ var gfile = File.new_for_path(tempdir);
|
||||
+
|
||||
+ // Now try to find and delete all files that start with "duplicity-"
|
||||
+ try {
|
||||
+ var enumerator = yield gfile.enumerate_children_async(
|
||||
+ FileAttribute.STANDARD_NAME,
|
||||
+ FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
|
||||
+ Priority.DEFAULT, null);
|
||||
+ while (true) {
|
||||
+ var infos = yield enumerator.next_files_async(NUM_ENUMERATED,
|
||||
+ Priority.DEFAULT, null);
|
||||
+ foreach (FileInfo info in infos) {
|
||||
+ if (info.get_name().has_prefix("duplicity-")) {
|
||||
+ var child = gfile.get_child(info.get_name());
|
||||
+ yield new DejaDup.RecursiveDelete(child).start_async();
|
||||
+ }
|
||||
+ }
|
||||
+ if (infos.length() != NUM_ENUMERATED)
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ catch (Error e) {
|
||||
+ // No worries
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
} // end namespace
|
23
sysutils/deja-dup/patches/patch-common_OperationBackup_vala
Normal file
23
sysutils/deja-dup/patches/patch-common_OperationBackup_vala
Normal file
@ -0,0 +1,23 @@
|
||||
$OpenBSD: patch-common_OperationBackup_vala,v 1.1 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=892063
|
||||
|
||||
--- common/OperationBackup.vala.orig Tue Aug 21 02:48:37 2012
|
||||
+++ common/OperationBackup.vala Mon Jan 21 08:43:45 2013
|
||||
@@ -116,11 +116,11 @@ public class OperationBackup : Operation
|
||||
rv.append(Path.build_filename(dir, ".xsession-errors"));
|
||||
}
|
||||
|
||||
- // Some problematic directories like /tmp and /proc should be left alone
|
||||
- dir = Environment.get_tmp_dir();
|
||||
- if (dir != null)
|
||||
- rv.append(dir);
|
||||
-
|
||||
+ // Skip all of our temporary directories
|
||||
+ foreach (var tempdir in DejaDup.get_tempdirs())
|
||||
+ rv.append(tempdir);
|
||||
+
|
||||
+ // Skip kernel directories
|
||||
rv.append("/proc");
|
||||
rv.append("/sys");
|
||||
|
14
sysutils/deja-dup/patches/patch-common_Operation_vala
Normal file
14
sysutils/deja-dup/patches/patch-common_Operation_vala
Normal file
@ -0,0 +1,14 @@
|
||||
$OpenBSD: patch-common_Operation_vala,v 1.1 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=892063
|
||||
|
||||
--- common/Operation.vala.orig Tue Aug 21 17:08:23 2012
|
||||
+++ common/Operation.vala Mon Jan 21 08:43:45 2013
|
||||
@@ -223,6 +223,7 @@ public abstract class Operation : Object
|
||||
finished = true;
|
||||
|
||||
unclaim_bus();
|
||||
+ yield DejaDup.clean_tempdirs();
|
||||
|
||||
done(success, cancelled, detail);
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
$OpenBSD: patch-tools_duplicity_DuplicityInstance_vala,v 1.1 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=892063
|
||||
|
||||
--- tools/duplicity/DuplicityInstance.vala.orig Tue Sep 18 18:41:56 2012
|
||||
+++ tools/duplicity/DuplicityInstance.vala Mon Jan 21 08:44:03 2013
|
||||
@@ -29,9 +29,30 @@ internal class DuplicityInstance : Object
|
||||
public bool verbose {get; private set; default = false;}
|
||||
public string forced_cache_dir {get; set; default = null;}
|
||||
|
||||
- public virtual void start(List<string> argv_in, List<string>? envp_in,
|
||||
- bool as_root = false) throws Error
|
||||
+ public async void start(List<string> argv_in, List<string>? envp_in,
|
||||
+ bool as_root = false)
|
||||
{
|
||||
+ try {
|
||||
+ /* Make deep copies of the lists, so if our caller doesn't yield, the
|
||||
+ lists won't be invalidated. */
|
||||
+ var argv = new List<string>();
|
||||
+ foreach (var arg in argv_in)
|
||||
+ argv.append(arg);
|
||||
+ var envp = new List<string>();
|
||||
+ foreach (var env in envp_in)
|
||||
+ envp.append(env);
|
||||
+ if (!yield start_internal(argv, envp, as_root))
|
||||
+ done(false, false);
|
||||
+ }
|
||||
+ catch (Error e) {
|
||||
+ warning("%s\n", e.message);
|
||||
+ done(false, false);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ async bool start_internal(List<string> argv_in, List<string>? envp_in,
|
||||
+ bool as_root) throws Error
|
||||
+ {
|
||||
var verbose_str = Environment.get_variable("DEJA_DUP_DEBUG");
|
||||
if (verbose_str != null && int.parse(verbose_str) > 0)
|
||||
verbose = true;
|
||||
@@ -76,46 +97,29 @@ internal class DuplicityInstance : Object
|
||||
if (cache_dir == null)
|
||||
cache_dir = Environment.get_user_cache_dir();
|
||||
if (cache_dir != null) {
|
||||
- bool add_dir = false;
|
||||
- var cache_file = File.new_for_path(cache_dir);
|
||||
- cache_file = cache_file.get_child(Config.PACKAGE);
|
||||
- try {
|
||||
- if (cache_file.make_directory_with_parents(null))
|
||||
- add_dir = true;
|
||||
- }
|
||||
- catch (IOError.EXISTS e) {
|
||||
- add_dir = true; // ignore
|
||||
- }
|
||||
- catch (Error e) {
|
||||
- warning("%s\n", e.message);
|
||||
- }
|
||||
- if (add_dir)
|
||||
- argv.append("--archive-dir=" + cache_file.get_path());
|
||||
+ cache_dir = Path.build_filename(cache_dir, Config.PACKAGE);
|
||||
+ if (DejaDup.ensure_directory_exists(cache_dir))
|
||||
+ argv.append("--archive-dir=" + cache_dir);
|
||||
}
|
||||
-
|
||||
+
|
||||
+ // Specify tempdir
|
||||
+ var tempdir = yield DejaDup.get_tempdir();
|
||||
+ if (DejaDup.ensure_directory_exists(tempdir))
|
||||
+ argv.append("--tempdir=%s".printf(tempdir));
|
||||
+
|
||||
// Add logging argument
|
||||
if (as_root) {
|
||||
// Make log file
|
||||
int logfd = 0;
|
||||
- try {
|
||||
- string logname;
|
||||
- logfd = FileUtils.open_tmp(Config.PACKAGE + "-XXXXXX", out logname);
|
||||
- logfile = File.new_for_path(logname);
|
||||
- }
|
||||
- catch (Error e) {
|
||||
- warning("%s\n", e.message);
|
||||
- done(false, false);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
+ string logname;
|
||||
+ logfd = FileUtils.open_tmp(Config.PACKAGE + "-XXXXXX", out logname);
|
||||
+ logfile = File.new_for_path(logname);
|
||||
argv.append("--log-file=%s".printf(logfile.get_path()));
|
||||
}
|
||||
else {
|
||||
// Open pipes to communicate with subprocess
|
||||
- if (Posix.pipe(pipes) != 0) {
|
||||
- done(false, false);
|
||||
- return;
|
||||
- }
|
||||
+ if (Posix.pipe(pipes) != 0)
|
||||
+ return false;
|
||||
|
||||
argv.append("--log-fd=%d".printf(pipes[1]));
|
||||
}
|
||||
@@ -195,9 +199,10 @@ internal class DuplicityInstance : Object
|
||||
if (pipes[1] != -1)
|
||||
Posix.close(pipes[1]);
|
||||
|
||||
- read_log.begin();
|
||||
+ yield read_log();
|
||||
+ return true;
|
||||
}
|
||||
-
|
||||
+
|
||||
public bool is_started()
|
||||
{
|
||||
return (int)child_pid > 0;
|
@ -0,0 +1,21 @@
|
||||
$OpenBSD: patch-tools_duplicity_DuplicityJob_vala,v 1.1 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=892063
|
||||
|
||||
--- tools/duplicity/DuplicityJob.vala.orig Tue Aug 21 17:08:23 2012
|
||||
+++ tools/duplicity/DuplicityJob.vala Mon Jan 21 08:44:03 2013
|
||||
@@ -1459,13 +1459,7 @@ internal class DuplicityJob : DejaDup.ToolJob
|
||||
}
|
||||
|
||||
/* Start duplicity instance */
|
||||
- try {
|
||||
- inst.start(argv, envp, needs_root);
|
||||
- }
|
||||
- catch (Error e) {
|
||||
- show_error(e.message);
|
||||
- done(false, false, null);
|
||||
- }
|
||||
+ inst.start.begin(argv, envp, needs_root);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
@comment $OpenBSD: PLIST,v 1.10 2012/08/30 08:00:12 ajacoutot Exp $
|
||||
@comment $OpenBSD: PLIST,v 1.11 2013/01/21 08:23:30 ajacoutot Exp $
|
||||
@bin bin/deja-dup
|
||||
@bin bin/deja-dup-preferences
|
||||
lib/deja-dup/
|
||||
@ -322,8 +322,6 @@ share/examples/deja-dup/xdg/autostart/
|
||||
share/examples/deja-dup/xdg/autostart/deja-dup-monitor.desktop
|
||||
@sample ${SYSCONFDIR}/xdg/autostart/deja-dup-monitor.desktop
|
||||
share/glib-2.0/schemas/org.gnome.DejaDup.gschema.xml
|
||||
share/help/
|
||||
share/help/C/
|
||||
share/help/C/deja-dup/
|
||||
share/help/C/deja-dup/backup-auto.page
|
||||
share/help/C/deja-dup/backup-first.page
|
||||
@ -337,7 +335,6 @@ share/help/C/deja-dup/restore-lost.page
|
||||
share/help/C/deja-dup/restore-revert.page
|
||||
share/help/C/deja-dup/restore-worst-case.page
|
||||
share/help/C/deja-dup/support.page
|
||||
share/help/ar/
|
||||
share/help/ar/deja-dup/
|
||||
share/help/ar/deja-dup/backup-auto.page
|
||||
share/help/ar/deja-dup/backup-first.page
|
||||
@ -379,7 +376,6 @@ share/help/bs/deja-dup/restore-lost.page
|
||||
share/help/bs/deja-dup/restore-revert.page
|
||||
share/help/bs/deja-dup/restore-worst-case.page
|
||||
share/help/bs/deja-dup/support.page
|
||||
share/help/ca/
|
||||
share/help/ca/deja-dup/
|
||||
share/help/ca/deja-dup/backup-auto.page
|
||||
share/help/ca/deja-dup/backup-first.page
|
||||
@ -393,7 +389,6 @@ share/help/ca/deja-dup/restore-lost.page
|
||||
share/help/ca/deja-dup/restore-revert.page
|
||||
share/help/ca/deja-dup/restore-worst-case.page
|
||||
share/help/ca/deja-dup/support.page
|
||||
share/help/cs/
|
||||
share/help/cs/deja-dup/
|
||||
share/help/cs/deja-dup/backup-auto.page
|
||||
share/help/cs/deja-dup/backup-first.page
|
||||
@ -421,7 +416,6 @@ share/help/da/deja-dup/restore-lost.page
|
||||
share/help/da/deja-dup/restore-revert.page
|
||||
share/help/da/deja-dup/restore-worst-case.page
|
||||
share/help/da/deja-dup/support.page
|
||||
share/help/de/
|
||||
share/help/de/deja-dup/
|
||||
share/help/de/deja-dup/backup-auto.page
|
||||
share/help/de/deja-dup/backup-first.page
|
||||
@ -435,7 +429,6 @@ share/help/de/deja-dup/restore-lost.page
|
||||
share/help/de/deja-dup/restore-revert.page
|
||||
share/help/de/deja-dup/restore-worst-case.page
|
||||
share/help/de/deja-dup/support.page
|
||||
share/help/el/
|
||||
share/help/el/deja-dup/
|
||||
share/help/el/deja-dup/backup-auto.page
|
||||
share/help/el/deja-dup/backup-first.page
|
||||
@ -491,7 +484,6 @@ share/help/eo/deja-dup/restore-lost.page
|
||||
share/help/eo/deja-dup/restore-revert.page
|
||||
share/help/eo/deja-dup/restore-worst-case.page
|
||||
share/help/eo/deja-dup/support.page
|
||||
share/help/es/
|
||||
share/help/es/deja-dup/
|
||||
share/help/es/deja-dup/backup-auto.page
|
||||
share/help/es/deja-dup/backup-first.page
|
||||
@ -505,7 +497,6 @@ share/help/es/deja-dup/restore-lost.page
|
||||
share/help/es/deja-dup/restore-revert.page
|
||||
share/help/es/deja-dup/restore-worst-case.page
|
||||
share/help/es/deja-dup/support.page
|
||||
share/help/eu/
|
||||
share/help/eu/deja-dup/
|
||||
share/help/eu/deja-dup/backup-auto.page
|
||||
share/help/eu/deja-dup/backup-first.page
|
||||
@ -519,7 +510,6 @@ share/help/eu/deja-dup/restore-lost.page
|
||||
share/help/eu/deja-dup/restore-revert.page
|
||||
share/help/eu/deja-dup/restore-worst-case.page
|
||||
share/help/eu/deja-dup/support.page
|
||||
share/help/fi/
|
||||
share/help/fi/deja-dup/
|
||||
share/help/fi/deja-dup/backup-auto.page
|
||||
share/help/fi/deja-dup/backup-first.page
|
||||
@ -533,7 +523,6 @@ share/help/fi/deja-dup/restore-lost.page
|
||||
share/help/fi/deja-dup/restore-revert.page
|
||||
share/help/fi/deja-dup/restore-worst-case.page
|
||||
share/help/fi/deja-dup/support.page
|
||||
share/help/fr/
|
||||
share/help/fr/deja-dup/
|
||||
share/help/fr/deja-dup/backup-auto.page
|
||||
share/help/fr/deja-dup/backup-first.page
|
||||
@ -547,7 +536,6 @@ share/help/fr/deja-dup/restore-lost.page
|
||||
share/help/fr/deja-dup/restore-revert.page
|
||||
share/help/fr/deja-dup/restore-worst-case.page
|
||||
share/help/fr/deja-dup/support.page
|
||||
share/help/gl/
|
||||
share/help/gl/deja-dup/
|
||||
share/help/gl/deja-dup/backup-auto.page
|
||||
share/help/gl/deja-dup/backup-first.page
|
||||
@ -589,7 +577,6 @@ share/help/hr/deja-dup/restore-lost.page
|
||||
share/help/hr/deja-dup/restore-revert.page
|
||||
share/help/hr/deja-dup/restore-worst-case.page
|
||||
share/help/hr/deja-dup/support.page
|
||||
share/help/hu/
|
||||
share/help/hu/deja-dup/
|
||||
share/help/hu/deja-dup/backup-auto.page
|
||||
share/help/hu/deja-dup/backup-first.page
|
||||
@ -701,7 +688,6 @@ share/help/nl/deja-dup/restore-lost.page
|
||||
share/help/nl/deja-dup/restore-revert.page
|
||||
share/help/nl/deja-dup/restore-worst-case.page
|
||||
share/help/nl/deja-dup/support.page
|
||||
share/help/oc/
|
||||
share/help/oc/deja-dup/
|
||||
share/help/oc/deja-dup/backup-auto.page
|
||||
share/help/oc/deja-dup/backup-first.page
|
||||
@ -715,7 +701,6 @@ share/help/oc/deja-dup/restore-lost.page
|
||||
share/help/oc/deja-dup/restore-revert.page
|
||||
share/help/oc/deja-dup/restore-worst-case.page
|
||||
share/help/oc/deja-dup/support.page
|
||||
share/help/pa/
|
||||
share/help/pa/deja-dup/
|
||||
share/help/pa/deja-dup/backup-auto.page
|
||||
share/help/pa/deja-dup/backup-first.page
|
||||
@ -729,7 +714,6 @@ share/help/pa/deja-dup/restore-lost.page
|
||||
share/help/pa/deja-dup/restore-revert.page
|
||||
share/help/pa/deja-dup/restore-worst-case.page
|
||||
share/help/pa/deja-dup/support.page
|
||||
share/help/pl/
|
||||
share/help/pl/deja-dup/
|
||||
share/help/pl/deja-dup/backup-auto.page
|
||||
share/help/pl/deja-dup/backup-first.page
|
||||
@ -757,7 +741,6 @@ share/help/ps/deja-dup/restore-lost.page
|
||||
share/help/ps/deja-dup/restore-revert.page
|
||||
share/help/ps/deja-dup/restore-worst-case.page
|
||||
share/help/ps/deja-dup/support.page
|
||||
share/help/pt_BR/
|
||||
share/help/pt_BR/deja-dup/
|
||||
share/help/pt_BR/deja-dup/backup-auto.page
|
||||
share/help/pt_BR/deja-dup/backup-first.page
|
||||
@ -799,7 +782,6 @@ share/help/sk/deja-dup/restore-lost.page
|
||||
share/help/sk/deja-dup/restore-revert.page
|
||||
share/help/sk/deja-dup/restore-worst-case.page
|
||||
share/help/sk/deja-dup/support.page
|
||||
share/help/sl/
|
||||
share/help/sl/deja-dup/
|
||||
share/help/sl/deja-dup/backup-auto.page
|
||||
share/help/sl/deja-dup/backup-first.page
|
||||
@ -813,7 +795,6 @@ share/help/sl/deja-dup/restore-lost.page
|
||||
share/help/sl/deja-dup/restore-revert.page
|
||||
share/help/sl/deja-dup/restore-worst-case.page
|
||||
share/help/sl/deja-dup/support.page
|
||||
share/help/sr/
|
||||
share/help/sr/deja-dup/
|
||||
share/help/sr/deja-dup/backup-auto.page
|
||||
share/help/sr/deja-dup/backup-first.page
|
||||
@ -827,7 +808,6 @@ share/help/sr/deja-dup/restore-lost.page
|
||||
share/help/sr/deja-dup/restore-revert.page
|
||||
share/help/sr/deja-dup/restore-worst-case.page
|
||||
share/help/sr/deja-dup/support.page
|
||||
share/help/sv/
|
||||
share/help/sv/deja-dup/
|
||||
share/help/sv/deja-dup/backup-auto.page
|
||||
share/help/sv/deja-dup/backup-first.page
|
||||
@ -869,7 +849,6 @@ share/help/tr/deja-dup/restore-lost.page
|
||||
share/help/tr/deja-dup/restore-revert.page
|
||||
share/help/tr/deja-dup/restore-worst-case.page
|
||||
share/help/tr/deja-dup/support.page
|
||||
share/help/vi/
|
||||
share/help/vi/deja-dup/
|
||||
share/help/vi/deja-dup/backup-auto.page
|
||||
share/help/vi/deja-dup/backup-first.page
|
||||
@ -883,7 +862,6 @@ share/help/vi/deja-dup/restore-lost.page
|
||||
share/help/vi/deja-dup/restore-revert.page
|
||||
share/help/vi/deja-dup/restore-worst-case.page
|
||||
share/help/vi/deja-dup/support.page
|
||||
share/help/zh_CN/
|
||||
share/help/zh_CN/deja-dup/
|
||||
share/help/zh_CN/deja-dup/backup-auto.page
|
||||
share/help/zh_CN/deja-dup/backup-first.page
|
||||
|
Loading…
x
Reference in New Issue
Block a user