diff --git a/conf/type/__rsyncer/gencode-local b/conf/type/__rsyncer/gencode-local
new file mode 100755
index 00000000..0d08e445
--- /dev/null
+++ b/conf/type/__rsyncer/gencode-local
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# Copyright (C) 2011 Daniel Maher (phrawzty+cdist at gmail.com)
+#
+# This file is part of cdist (https://github.com/telmich/cdist/).
+#
+# cdist 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.
+#
+# cdist 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 cdist. If not, see .
+#
+
+source="$(cat "$__object/parameter/source")"
+
+if [ -f "$__object/parameter/destination" ]; then
+ destination="$(cat "$__object/parameter/destination")"
+else
+ destination="/$__object_id"
+fi
+
+# The system binary is probably ok, but if not...
+if [ -f "$__object/parameter/rsyncbin" ]; then
+ rsyncbin="$(cat "$__object/parameter/rsyncbin")"
+else
+ rsyncbin=`which rsync`
+fi
+
+args='-a --stats'
+
+# If the --delete argument should be passed to rsync.
+if [ -f "$__object/parameter/delete" ]; then
+ args="$args --delete"
+fi
+
+# Run rsync (locally).
+echo "$rsyncbin $args $source root@$__target_host:$destination"
diff --git a/conf/type/__rsyncer/man.text b/conf/type/__rsyncer/man.text
new file mode 100644
index 00000000..6fab9fd3
--- /dev/null
+++ b/conf/type/__rsyncer/man.text
@@ -0,0 +1,62 @@
+cdist-type__rsyncer(7)
+======================
+Daniel Maher
+
+
+NAME
+----
+cdist-type__rsyncer - Use rsync to copy files.
+
+
+DESCRIPTION
+-----------
+This type is used to trigger rsync to copy files from the machine running cdist
+(source) to the target machine in question (destination). The likely usage is
+the rapid deployment of full directory trees, the cohorency of which can be
+guarunteed with the optional --delete argument, which will remove any files
+from the destination which are not present on the source.
+
+
+REQUIRED PARAMETERS
+-------------------
+source::
+ The full path of the source from which to copy. This is passed directly
+ to rsync.
+
+
+OPTIONAL PARAMETERS
+-------------------
+destination::
+ The full path of the destination. This is passed directly to rsync.
+ Default: object_id
+
+delete::
+ If true, remove files from destination which are not in source. This is
+ effectively the --delete argument of rsync.
+ Default: false
+
+rsyncbin::
+ Specify the full path to the rsync binary.
+ Default: `which rsync`
+
+EXAMPLES
+--------
+
+--------------------------------------------------------------------------------
+# Basic example
+__rsyncer '/home/foo' --source '/opt/dist/foo'
+
+# Fancier example
+__rsyncer FOO --source '/opt/dist/foo' --destination '/home/foo/' --delete true
+--------------------------------------------------------------------------------
+
+
+SEE ALSO
+--------
+- cdist-type(7)
+
+
+COPYING
+-------
+Copyright \(C) 2011 Daniel Maher. Free use of this software is granted under
+the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/conf/type/__rsyncer/parameter/optional b/conf/type/__rsyncer/parameter/optional
new file mode 100644
index 00000000..3bcb4dc7
--- /dev/null
+++ b/conf/type/__rsyncer/parameter/optional
@@ -0,0 +1,3 @@
+destination
+delete
+rsyncbin
diff --git a/conf/type/__rsyncer/parameter/required b/conf/type/__rsyncer/parameter/required
new file mode 100644
index 00000000..5a18cd2f
--- /dev/null
+++ b/conf/type/__rsyncer/parameter/required
@@ -0,0 +1 @@
+source